Docker的基本管理命令!!!学会docker的第一步
深夜博文,干活满满
- Docker的安装
- Docker镜像的基础命令
- 1.查看镜像与版本信息
- 2.查找指定镜像
- 3.下载镜像 pull
- 4.获取镜像信息 inspect
- 5.给镜像设置多标签 tag
- 6.导出与导入镜像
- Docker容器的基础命令
- 1.查看容器
- 2.创建容器
- 3.容器的启动
- 4.docker run
- 5.容器的删除
- 6.进入与退出容器
- 7.容器的导入导出
- 一些常识性问题
- docker日志的查看
Docker的安装
##这里我用的是阿里线网源,所以需要先搭建yum线网源仓库##
[root@localhost ~]# hostnamectl set-hostname docker
[root@localhost ~]# su[root@docker ~]# cd /etc/yum.repos.d/
[root@docker yum.repos.d]# ls
backup local.repo
[root@docker yum.repos.d]# ls
backup local.repo
[root@docker yum.repos.d]# rm -rf local.repo
[root@docker yum.repos.d]# mv backup/* /etc/yum.repos.d/
[root@docker yum.repos.d]# ll
total 28
drwxr-xr-x. 2 root root 6 Nov 10 06:38 backup
-rw-r--r--. 1 root root 1664 Aug 30 2017 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Aug 30 2017 CentOS-CR.repo
-rw-r--r--. 1 root root 649 Aug 30 2017 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 Aug 30 2017 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 Aug 30 2017 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Aug 30 2017 CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 Aug 30 2017 CentOS-Vault.repo[root@docker yum.repos.d]# yum clean all
[root@docker yum.repos.d]# yum makecache
##添加阿里docker线网源##[root@docker yum.repos.d]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo##添加完成后会有一个docker-ce.repo##
[root@docker yum.repos.d]# ls
docker-ce.repo[root@docker yum.repos.d]# yum install -y docker-ce
[root@docker yum.repos.d]# systemctl start docker.service
[root@docker yum.repos.d]# systemctl enable docker.service
- 镜像加速
为什么做镜像加速,不加速的话很卡很卡很卡!!!
##在阿里官网中,每个人都有自己的加速网址,可以去阿里云控制台查看##
[root@docker yum.repos.d]# cd ~
[root@docker ~]# mkdir -p /etc/docker
[root@docker ~]# tee /etc/docker/daemon.json <<-'EOF'
> {> "registry-mirrors": ["https://ga12ck6j.mirror.aliyuncs.com"]
> }
> EOF
{"registry-mirrors": ["https://ga1ock6j.mirror.aliyuncs.com"]
}
[root@docker ~]# cd /etc/docker/
[root@docker docker]# ls
daemon.json key.json
[root@docker docker]# systemctl daemon-reload
[root@docker docker]# systemctl restart docker
- 网络优化
[root@docker docker]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1[root@docker docker]# sysctl -p
net.ipv4.ip_forward = 1[root@docker docker]# systemctl restart network
[root@docker docker]# systemctl restart docker
- 安装完docker后,会自动分配一块网卡
[root@docker docker]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255ether 02:42:f0:05:36:99 txqueuelen 0 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- 它的功能就像安装VM时自动给你分配的VM1与VM8,用于宿主机的物理网卡(比如ens33),与docker内部容器的网络连通
Docker镜像的基础命令
1.查看镜像与版本信息
##因为我没有镜像所以无任何显示##
[root@docker docker]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE
镜像名称 镜像标签 镜像ID 什么时候创建的 镜像大小
##查看docker的版本信息##
[root@docker docker]# docker version
Client: Docker Engine - CommunityVersion: 19.03.13API version: 1.40Go version: go1.13.15Git commit: 4484c46d9dBuilt: Wed Sep 16 17:03:45 2020OS/Arch: linux/amd64Experimental: falseServer: Docker Engine - CommunityEngine:Version: 19.03.13 API version: 1.40 (minimum version 1.12)Go version: go1.13.15 ##go语言写的,go语言会大火吧Git commit: 4484c46d9dBuilt: Wed Sep 16 17:02:21 2020OS/Arch: linux/amd64Experimental: falsecontainerd:Version: 1.3.7GitCommit: 8fba4e9a7d01810a393d5d25a3621dc101981175runc:Version: 1.0.0-rc10GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dddocker-init:Version: 0.18.0GitCommit: fec3683
2.查找指定镜像
##全球的nginx镜像,按照热度排行###
[root@docker docker]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 13981 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1906 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 791 [OK]
linuxserver/nginx An Nginx container, brought to you by LinuxS… 128
jc21/nginx-proxy-manager Docker container for managing Nginx proxy ho… 109
tiangolo/nginx-rtmp Docker image with Nginx using the nginx-rtmp… 103 [OK]
bitnami/nginx Bitnami nginx Docker Image 90 [OK]
alfg/nginx-rtmp NGINX, nginx-rtmp-module and FFmpeg from sou… 80 [OK]
jlesage/nginx-proxy-manager Docker container for Nginx Proxy Manager 66 [OK]
nginxdemos/hello NGINX webserver that serves a simple page co… 63 [OK]
3.下载镜像 pull
##AUFS 若干层下载##
[root@docker docker]# docker pull nginxUsing default tag: latest
latest: Pulling from library/nginx
bb79b6b2107f: Pull complete
5a9f1c0027a7: Pull complete
b5c20b2b484f: Pull complete
166a2418f7e8: Pull complete
1966ea362d23: Pull complete
Digest: sha256:aeade65e99e5d5e7ce162833636f692354c227ff438556e5f3ed0335b7cc2f1b
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest##查看镜像##
[root@docker docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest c39a868aad02 4 days ago 133MB
##你的下载文件存放信息位置##
[root@docker overlay2]# vim /var/lib/docker/image/overlay2/repositories.json {"Repositories":{"nginx":
{"nginx:latest":"sha256:c39a868aad02a383c7e490e0fc4a5b0217f667f2de764bc2755e315a5adf64a1"
,"nginx@sha256:aeade65e99e5d5e7ce162833636f692354c227ff438556e5f3ed0335b7cc2f1b":"sha256:
c39a868aad02a383c7e490e0fc4a5b0217f667f2de764bc2755e315a5adf64a1"}}}
4.获取镜像信息 inspect
##获取镜像信息##
[root@docker overlay2]# docker inspect c39a868aad02
[{"Id": "sha256:c39a868aad02a383c7e490e0fc4a5b0217f667f2de764bc2755e315a5adf64a1","RepoTags": ["nginx:latest"],"RepoDigests": [//......."AttachStdin": false,"AttachStdout": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",//.......
- 这里插个小知识点,容器资源的格式几乎都是 json , yaml 两种
5.给镜像设置多标签 tag
[root@docker overlay2]# docker tag nginx:latest nginx:111
[root@docker overlay2]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 111 c39a868aad02 4 days ago 133MB
nginx latest c39a868aad02 4 days ago 133MB
- 这个相当于起别名
##删除标签##
[root@docker overlay2]# docker rmi c39a868aad02
Error response from daemon: conflict: unable to delete c39a868aad02 (must be forced) -
image is referenced in multiple repositories[root@docker overlay2]# docker rmi nginx:111
Untagged: nginx:111
- 注意:在镜像有多标签时,使用ID号删除是删不了的,只有剩下一个标签你才能删
6.导出与导入镜像
##导出镜像,-o表示导出+导出位置与名字+导出哪个镜像##
[root@docker opt]# docker save -o /opt/nginx nginx:latest
[root@docker opt]# ll -h
-rw------- 1 root root 131M Nov 10 07:42 nginx
##这个时候我们删除原本镜像,并导回####查看镜像
[root@docker opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest c39a868aad02 4 days ago 133MB##删除镜像
[root@docker opt]# docker rmi nginx:latest
Untagged: nginx:latest
Untagged: nginx@sha256:aeade65e99e5d5e7ce162833636f692354c227ff438556e5f3ed0335b7cc2f1b
Deleted: sha256:c39a868aad02a383c7e490e0fc4a5b0217f667f2de764bc2755e315a5adf64a1
Deleted: sha256:1af47386c12cb24b362bd785e71058ab675fbdcbda8e7a7ba0dd10c3cff75a2a
Deleted: sha256:25ee02f9e42f8cdca7ca8bc522cb69ac4a86a55401818a13c7a01e52a81894fe
Deleted: sha256:b1d2bc3292aa3d64794f99d2885d35b454993b4af24ad350a969d27925db7ebb
Deleted: sha256:4216e20d59f9fc90bccdd14493452532806d4803a25514366de2a9c5560624d0
Deleted: sha256:d0fe97fa8b8cefdffcef1d62b65aba51a6c87b6679628a2b50fc6a7a579f764c##再次查看镜像
[root@docker opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
##用load 导入镜像
[root@docker opt]# docker load < /opt/nginx d0fe97fa8b8c: Loading layer 72.49MB/72.49MB
2baf69a23d7a: Loading layer 64.54MB/64.54MB
2f57e21e4365: Loading layer 3.072kB/3.072kB
aee208b6ccfb: Loading layer 4.096kB/4.096kB
7b5417cae114: Loading layer 3.584kB/3.584kB
Loaded image: nginx:latest##查看镜像##
[root@docker opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest c39a868aad02 4 days ago 133MB
Docker容器的基础命令
1.查看容器
[root@docker opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
容器的ID 使用的哪一个镜像创建的 环境 创建的时间 容器的状态 协议与端口
- -a :查看所有容器状态,不加的话查看的是已经运行的容器
2.创建容器
- 容器基于镜像创建,所以你需要先看有没有镜像
##可以看到这个时候的状态只是创建,你还需要去启动##
[root@docker opt]# docker create -it nginx:latest /bin/bash
bb38787230cf40cb8c833f751667e129b97d6aeaf04983f8535fbb78d205f207[root@docker opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb38787230cf nginx:latest "/docker-entrypoint.…" 9 seconds ago Created hopeful_maxwell
- -i : 让容器的标准输入保持打开
- -t : 让docker分配一个伪终端
- /bin/bash : 需要的环境
3.容器的启动
[root@docker opt]# docker start bb38787230cf
bb38787230cf
[root@docker opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb38787230cf nginx:latest "/docker-entrypoint.…" 2 minutes ago Up 6 seconds 80/tcp hopeful_maxwell
- 注意:这里并不意味着你就可以对外提供服务了,你还需要做NAT映射,为了保护容器的安全性
4.docker run
- docker run : 一条命令执行下载镜像,创建容器,开启容器
- docker run后面跟镜像,有直接使用,没有会直接去下载镜像,-c 后面跟要在容器种操作的指令
[root@docker opt]# docker run centos:7 /bin/bash -c ls /Unable to find image 'centos:7' locally
7: Pulling from library/centos
75f829a71a1c: Pull complete
Digest: sha256:19a79828ca2e505eaee0ff38c2f3fd9901f4826737295157cc5212b7a372cd2b
Status: Downloaded newer image for centos:7
anaconda-post.log
bin
etc
home
//......省略[root@docker opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
955ec5648d68 centos:7 "/bin/bash -c ls /" 2 minutes ago Exited (0) 2 minutes ago awesome_hodgkin
bb38787230cf nginx:latest "/docker-entrypoint.…" 16 minutes ago Up 14 minutes 80/tcp hopeful_maxwell[root@docker opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest c39a868aad02 4 days ago 133MB
centos 7 7e6257c9f8d8 3 months ago 203MB
5.容器的删除
- 删除容器前,要先关闭容器,否则删除不了
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
955ec5648d68 centos:7 "/bin/bash -c ls /" 11 hours ago Exited (0) 11 hours ago awesome_hodgkin
bb38787230cf nginx:latest "/docker-entrypoint.…" 11 hours ago Up 3 seconds 80/tcp hopeful_maxwell
##先关闭,再删除##
[root@docker ~]# docker stop bb38787230cf
bb38787230cf[root@docker ~]# docker rm bb38787230cf
bb38787230cf[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
955ec5648d68 centos:7 "/bin/bash -c ls /" 11 hours ago Exited (0) 11 hours ago awesome_hodgkin
6.进入与退出容器
- 注意点:你进入的容器一定要是开启状态,否则无法进入
##首先开启一个容器##
[root@docker ~]# docker create -it nginx:latest /bin/bash
546b2311fcff7ec4c6fa46c70bcd1c8bb4007577a99ebade3559fd3396bc47a6[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
546b2311fcff nginx:latest "/docker-entrypoint.…" 6 seconds ago Created suspicious_edison
955ec5648d68 centos:7 "/bin/bash -c ls /" 11 hours ago Exited (0) 11 hours ago awesome_hodgkin[root@docker ~]# docker start 546b2311fcff
546b2311fcff[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
546b2311fcff nginx:latest "/docker-entrypoint.…" 18 seconds ago Up 1 second 80/tcp suspicious_edison
955ec5648d68 centos:7 "/bin/bash -c ls /" 11 hours ago Exited (0) 11 hours ago awesome_hodgkin
##进入nginx容器##
[root@docker ~]# docker exec -it 546b2311fcff /bin/bash
root@546b2311fcff:/###退出容器
root@546b2311fcff:/# exit
exit
7.容器的导入导出
- 容器的导出(存储到指定目录+备注名)
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
546b2311fcff nginx:latest "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 80/tcp suspicious_edison
955ec5648d68 centos:7 "/bin/bash -c ls /" 11 hours ago Exited (0) 11 hours ago awesome_hodgkin[root@docker ~]# docker export 546b2311fcff > /opt/nginx
[root@docker ~]# cd /opt/
[root@docker opt]# ll
total 134112
drwx--x--x 4 root root 28 Nov 10 06:43 containerd
-rw------- 1 root root 135339008 Nov 10 19:12 nginx
这个时候我们去删除这个容器
##可以看到,正在运行的容器是不能删除的##
[root@docker opt]# docker rm 546b2311fcff
Error response from daemon: You cannot remove a running container 546b2311fcff7ec4c6fa46c70bcd1c8bb4007577a99ebade3559fd3396bc47a6. Stop the container before attempting removal or force remove##只有停止状态或运行结束状态的容器才可以删除##
[root@docker opt]# docker stop 546b2311fcff
546b2311fcff[root@docker opt]# docker rm 546b2311fcff
546b2311fcff
- 容器的导入
- 注意点:容器导入并不会创建容器,只会生成镜像
##这里用到cat与管道符号“|”将看到的内容递给dicker引入,并给个名字叫nginx:web#[root@docker opt]# cat /opt/nginx | docker import - nginx:web
sha256:d79ea958e6d3fa2d687bce6cd68bfed285600c6a52d31bb5f2c45400bc1cf06e##可以看到并没有生成容器##
[root@docker opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
955ec5648d68 centos:7 "/bin/bash -c ls /" 11 hours ago Exited (0) 11 hours ago awesome_hodgkin##查看生成了镜像##
[root@docker opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx web d79ea958e6d3 3 minutes ago 131MB
nginx latest c39a868aad02 4 days ago 133MB
centos 7 7e6257c9f8d8 3 months ago 203MB
一些常识性问题
(1)正在运行的或者停止的容器,是不可以直接删除它的镜像的,只要你docker ps -a 能查到,它的镜像就删不了
(2)正在运行的容器不可以直接删除
(3)有多标签的相同ID的镜像,你不能通过删除ID的方式删除这个镜像,除非你 rmi -f 强制删除
docker日志的查看
查看实时日志,不看历史:
docker -f --tail 1 container_id
查看后100行的日志:
docker logs --tail 100 container_id
查看30分钟之内日志
docker logs --since 30m container_id
查看指定日期之后的日志 (2019-03-25T13:00:00 到现在的日志)
docker logs -t --since="2019-03-25T13:00:00" container_id
查看指定时间后的日志,只显示最后100行:
docker logs -f -t --since="2019-03-25" --tail=100 container_id
查看指定时间段之内的日志, (–until 需要docker API 1.35 之上才支持)
docker logs -t --since="2019-03-25T13:00:00" --until="2019-03-25T14:00:00" container_id
对查询到的日志内容进行过滤
docker logs -f --tail=100 container_id | grep 'xxx'
Docker的基本管理命令!!!学会docker的第一步相关推荐
- Docker 1.13 管理命令
1.12 CLI 的问题 Docker1.12 命令行接口(CLI)有40多个顶级命令,这些命令存在以下问题: 没有归类组织,这让docker 新手很难学习: 有些命令没有提供足够的上下文环境,以至于 ...
- Docker的常用管理命令Docker将数据挂载到容器的三种方式
文章目录 镜像管理命令 容器管理常用命令 docker run常用参数 Docker run的其他参数 docker 创建容器命令 容器资源限制 docker管理容器常用命令 docker将数据挂载到 ...
- 【赵强老师-博文】使用Docker的图形管理工具:Docker UI
Docker提供一个平台来把应用程序当作容器来打包.分发.共享和运行,它已经通过节省工作时间来拯救了成千上万的系统管理员和开发人员.Docker不用关注主机上运行的操作系统是什么,它没有开发语言.框架 ...
- Docker Compose搭建consul群集环境(了解Docker Compose及常用命令,Docker四种网络,Doker指定端口)
文章目录 Docker Compose搭建consul群集环境 认识Docker Compose IConsul Docker Compose容器编排 Dasker Compose配置常用字段 Bos ...
- 施行研发管理,顶层设计是第一步——研发管理自身的战略
对于自主研发处于战略层面的技术型企业,研发管理也应该成为战略主题的一部分,从战略视角思考如何做好这部分工作,这是一个全盘性的工作,与普通或者局部的单纯项目管理有本质的区别,而且,项目管理只是研发管理体 ...
- docker覆盖镜像默认命令之docker entrypoint
文章目录 1.前置 2.entrypoint 3.实际使用 ①: 确认镜像设置的ENTRYPOINT是单命令还是可执行文件 ②: 准备可执行文件 ③: 运行镜像 ④: 效果对比 不覆盖效果: 覆盖效果 ...
- 浅谈Docker:DockerLinux安装,镜像管理命令,镜像制作命令,容器管理命令,数据卷,DockerFile,Docker-compose
什么是Docker? Docker 概念 • Docker 是一个开源的应用容器引擎 • 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc) • ...
- Docker集群管理(DockerHub Harbor 打包-Jib 任务编排工具- docker-compose和Swarm)
Docker 集群管理 Docker 集群管理 镜像仓库管理 DockerHUb仓库管理 什么是DockerHUb 账号注册和登陆 Docker客户端登录 管理镜像 推送镜像 仓库镜像测试 regis ...
- docker集群管理
docker集群管理 ps:docker machine docker swarm docker compose 在Docker Machine发布之前,你可能会遇到以下问题: ...
- docker run后台启动命令_Docker-第五部分:15个 Docker 命令
原文作者:Jeff Hale 原文地址:https://towardsdatascience.com/15-docker-commands-you-should-know-970ea5203421 翻 ...
最新文章
- 锐捷交换机配置snmp版本_snmp交换机配置
- 用python 脚本控制telnet登录交换机
- UA池和IP代理池使用
- spring junit单元测试
- mysqldump备份(全量+增量)
- spring组键扫描
- 最优秀的5个Linux文本编辑器
- mc服务器隐藏指令显示,服务器常用指令 搬运自Mc服主网
- 许多自己正在总结的东东
- idea springboot启动报SLF4J:Failed to load class “org.slf4j.impl.StaticLoggerBinder”
- 如何隐藏条形码的数据
- 《疯狂的程序员》经典语录
- html宠物医院制作与实现,基于Web方式的宠物医院管理系统的实现 .doc
- JSON 对比工具,优秀的JSON对比工具,文件内容对比
- 高等数学学习笔记——第四十讲——微积分基本公式
- 【261期】为什么 BigDecimal 类不能使用 equals() 方法做等值比较?
- 《领导变革》读书笔记
- Logo常用的12种颜色
- 蓝桥杯 算法训练 一元三次方程求解
- 手机浏览器类型ua php,通过userAgent判断手机浏览器类型(示例代码)
热门文章
- ‘dtools’不是内部或外部命令,也不是可运行的程序或批处理文件,个人解决方案
- pandas GUI 神器 D-Tale,可视化操作自动转代码
- 详述 Kafka 基本原理
- java Map根据Value获取key
- 大数据压缩处理:数据分卷压缩和分卷压缩解压
- 小米机顶盒安装第三方软件流程
- mysql 1236错误_MySQL主从失败 错误Got fatal error 1236解决方法
- 系统集成项目管理工程师知识点总结(错题记录)
- 【LeetCode - 317】离建筑物最近的距离
- 关于“男孩出剪刀,女孩出布”,你怎么看,你又会怎么选择?