二、Docker基础管理命令
转载自:https://www.cnblogs.com/dcz2015/p/12395940.html
一、替换镜像的仓库
编辑 /etc/docker/daemon.json文件(不存在),加入阿里云的镜像
|
1
2
3
|
{ "registry-mirrors": ["https://n6syp70m.mirror.aliyuncs.com"]} |
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
二、容器命令基础
①查看系统信息
|
1
|
> docker system info 或者 > docker info |
执行之后会产生如下信息:

像上图,可以看到当前docker中容器数量是3个,并且3个都停止了。
②查看帮助手册
|
1
|
> docker help |
docker 1.13之后,为了方便命令的管理,分为了Management Commands 和 Commands,就像上面获取系统信息的的两个命令分别是Management Command 和 Command两者是兼容的,下面是一些常用命令的对应关系。

③命令选项
上图中可以看到 Options,这里面有 -v --version 这样的命令,
-叫做短选项
--叫做长选项
-a -q 如果组合到一起 -aq 就称为复合选项
如果什么都不写就是无选项
三、容器的生命周期管理
1.创建容器
A. docker run 命令
|
1
|
# Management Commands<br>$ docker container run [OPTIONS] IMAGE [COMMAND [ARGS...]]<br># 旧命令格式如下:<br>$ docker run [OPTIONS] IMAGE [COMMAND [ARGS...]] |
docker container run 命令会在指定的镜像 IMAGE 上创建一个可写的容器(因为镜像是只读的),然后开始运行指定的命令 [COMMAND [ARGS...]]。
-i 或 --interactive, 交互模式
-t 或 --tty, 分配一个 pseudo-TTY,即伪终端
--rm 在容器退出后自动移除
-p 将容器的端口映射到主机
-v 或 --volume, 指定数据卷
举例:
|
1
|
[root@TBEARZ206458 ~]# docker container run busybox echo "hello xxx" <br>Unable to find image 'busybox:latest' locally latest: <br>Pulling from library/busybox bdbbaa22dec6: <br>Pull complete Digest: <br>sha256:6915be4043561d64e0ab0f8f098dc2ac48e077fe23f488ac24b665166898115a Status:<br>Downloaded newer image for busybox:latest <br>hello xxx |
本地找镜像【busybox】找不到然后没从镜像仓库下载,然后运行。
什么是BusyBox镜像:https://blog.csdn.net/chengqiuming/article/details/79313539
在执行命令之后,容器就会退出,如果我们需要一个保持运行的容器,最简单的方法就是给这个容器一个可以保持运行的命令或者应用
对于交互式的进程而言(例如这里的 bash),必须将 -i 和 -t 参数一起使用,才能为容器进程分配一个伪终端,
通常我们会直接使用 -it 做交互
通常以 -d 参数指定容器以后台模式运行
举例:运行一个Ubuntu的镜像
|
1
|
[root@TBEARZ206458 ~]# docker container run -it ubuntu /bin/bash <br>root@ec2ee18aded3:/# |
ec2ee18aded3 是容器的ID,可以通过 docker container ls -a 查看所有容器
|
1
|
[root@TBEARZ206458 ~]# docker container ls -a <br>CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ec2ee18aded3 ubuntu "/bin/bash" 15 minutes ago Up 13 minutes exciting_morse |
B.docker Create 命令
docker run 命令的作用并不是创建一个容器,而是在一个新的容器中运行一个命令。
|
1
|
# Management Commands<br>$ docker container create [OPTIONS] IMAGE [COMMAND] [ARG...]<br># 旧的命令格式如下:<br>$ docker create [OPTIONS] IMAGE [COMMAND] [ARG...] |
该命令执行之后,会创建一个可执行的容器,但是不是马上执行。
l --name 指定一个容器名称,未指定时,会随机产生一个名字
l --hostname 设置容器的主机名
l --mac-address 设置 MAC 地址
l --ulimit 设置 Ulimit 选项
我们可以通过其对容器运行时的一些资源进行限制。
ulimit 可以参考 https://www.ibm.com/developerworks/cn/linux/l-cn-ulimit/ ,而对于在下面我们将要设置的部分值的含义,可以参考 https://access.redhat.com/solutions/61334 。
举例:
|
1
2
3
4
5
6
7
8
9
10
11
|
[root@TBEARZ206458 ~]# docker container create \>--name TestUbuntu \>--hostname TestUbuntuHostName \ >--mac-address 01:02:03:04:05:06 \ >--ulimit nproc=1024:2048 \>-it ubuntu /bin/bash |
创建完成之后会生成一个很长的ID:

对应的使用 docker container ls -a 可以看到所有的容器信息: 是Create状态

2.容器的启动与停止
启动
|
1
|
# Management Commands<br>$ docker container start [OPTIONS] CONTAINER [CONTAINER...]<br># 旧的命令格式如下:<br>$ docker start [OPTIONS] CONTAINER [CONTAINER...] |
停止
|
1
|
# Management Commands<br>$ docker container stop CONTAINER [CONTAINER...]<br># 旧的命令格式如下:<br>$ docker stop CONTAINER [CONTAINER...] |
重启
|
1
|
# Management Commands<br>$ docker container restart CONTAINER [CONTAINER...]<br># 旧的命令格式如下:<br>$ docker restart CONTAINER [CONTAINER...] |
举例:创建一个容器,并启动、关闭、重启。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
创建[root@TBEARZ206458 ~]# docker container create --name MyContainer --hostname MyContainerHostName -it ubuntu /bin/bash78e90b182e622174cd1028b00ec5efe5a8d572e70787279e84a36abd539b85a4[root@TBEARZ206458 ~]# docker container ls -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES78e90b182e62 ubuntu "/bin/bash" 9 seconds ago Created MyContainerc77f432bc04b ubuntu "/bin/bash" 27 minutes ago Created TestUbuntuec2ee18aded3 ubuntu "/bin/bash" About an hour ago Exited (0) 3 minutes ago exciting_morse[root@TBEARZ206458 ~]# docker container start MyContainerMyContainer[root@TBEARZ206458 ~]# docker container ls -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES78e90b182e62 ubuntu "/bin/bash" 51 seconds ago Up 2 seconds MyContainerc77f432bc04b ubuntu "/bin/bash" 28 minutes ago Created TestUbuntuec2ee18aded3 ubuntu "/bin/bash" About an hour ago Exited (0) 3 minutes ago exciting_morse[root@TBEARZ206458 ~]# docker container stop MyContainerMyContainer[root@TBEARZ206458 ~]# docker container ls -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES78e90b182e62 ubuntu "/bin/bash" About a minute ago Exited (0) 2 seconds ago MyContainerc77f432bc04b ubuntu "/bin/bash" 28 minutes ago Created TestUbuntuec2ee18aded3 ubuntu "/bin/bash" About an hour ago Exited (0) 4 minutes ago exciting_morse[root@TBEARZ206458 ~]# docker container restart MyContainerMyContainer[root@TBEARZ206458 ~]# docker container ls -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES78e90b182e62 ubuntu "/bin/bash" About a minute ago Up 1 second MyContainerc77f432bc04b ubuntu "/bin/bash" 29 minutes ago Created TestUbuntuec2ee18aded3 ubuntu "/bin/bash" About an hour ago Exited (0) 4 minutes ago exciting_morse |
综上 docker run 命令实际上是一个组合的操作,创建并启动
3.容器中进程的暂停与恢复
暂停容器进程
|
1
|
# Management Commands<br>$ docker container pause CONTAINER [CONTAINER...]<br># 旧的命令格式如下:<br>$ docker pause [OPTIONS] CONTAINER [CONTAINER...] |
举例暂停
|
1
2
3
4
5
6
7
|
[root@TBEARZ206458 ~]# docker container pause MyContainerMyContainer[root@TBEARZ206458 ~]# docker container ls -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES78e90b182e62 ubuntu "/bin/bash" 2 hours ago Up 2 hours (Paused) MyContainerc77f432bc04b ubuntu "/bin/bash" 2 hours ago Created TestUbuntuec2ee18aded3 ubuntu "/bin/bash" 3 hours ago Exited (0) 2 hours ago exciting_morse |
恢复容器进程
|
1
|
# Management Commands<br>$ docker container unpause CONTAINER [CONTAINER...]<br># 旧的命令格式如下:<br>$ docker unpause [OPTIONS] CONTAINER [CONTAINER...] |
举例 恢复
|
1
2
3
4
5
6
7
|
[root@TBEARZ206458 ~]# docker container unpause MyContainerMyContainer[root@TBEARZ206458 ~]# docker container ls -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES78e90b182e62 ubuntu "/bin/bash" 2 hours ago Up 2 hours MyContainerc77f432bc04b ubuntu "/bin/bash" 2 hours ago Created TestUbuntuec2ee18aded3 ubuntu "/bin/bash" 3 hours ago Exited (0) 2 hours ago exciting_morse |
4.查看容器列表
刚刚已经实践过了
|
1
|
# Management Commands<br>$ docker container ls [OPTIONS]<br># 旧的命令格式如下:<br>$ docker ps [OPTIONS] |
常用参数
-a 显示所有的容器
-q 仅显示 ID
-s 显示总的文件大小
5.连接到容器中
容器一般运行于后台中,需要使用 attach 操作将本地标准输入输出流连接到一个运行中的容器
|
1
2
3
4
|
# Management Commands$ docker container attach [OPTIONS] CONTAINER# 旧的命令格式如下:$ docker attach [OPTIONS] CONTAINER |
举例:
|
1
2
3
4
|
[root@TBEARZ206458 ~]# docker container attach MyContainerroot@MyContainerHostName:/# lsbin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr varroot@MyContainerHostName:/# |
6.查看元数据
|
1
2
3
4
|
# Management Commands$ docker container inspect [OPTIONS] CONTAINER [CONTAINER...]# 旧的命令格式如下:$ docker inspect [OPTIONS] CONTAINER [CONTAINER...] |
举例:
|
1
2
3
4
5
6
|
[root@TBEARZ206458 ~]# docker container inspect MyContainer | grep Name "Name": "/MyContainer", "Name": "no", "Name": "overlay2" "Hostname": "MyContainerHostName",[root@TBEARZ206458 ~]# |
7.显示进程信息
显示运行中的容器的进程信息
|
1
2
3
4
|
# Management Commands$ docker container top CONTAINER# 旧的命令格式如下:$ docker top CONTAINER |
举例:
|
1
2
3
|
[root@TBEARZ206458 ~]# docker container top MyContainerUID PID PPID C STIME TTY TIME CMDroot 24171 24155 1 14:09 ? 00:00:00 /bin/bash |
8.查看文件修改
|
1
2
3
4
|
# Management Commands$ docker container diff CONTAINER# 旧的命令格式如下:$ docker diff CONTAINER |
主要是用于对比容器前后的改变
举例: 在容器中创建一个文件,并对比改变
|
1
|
[root@TBEARZ206458 ~]# docker container attach MyContainer <br>root@MyContainerHostName:/# touch A.txt <br>root@MyContainerHostName:/# exit<br>[root@TBEARZ206458 ~]# docker container diff MyContainer <br>A /A.txt <br>C /root <br>A /root/.bash_history |
A代表 Add
C代表 Change
9.容器中执行命令
除了使用 docker container run 执行命令之外,我们还可以在一个运行中的容器中执行命令,使用如下格式:
$ docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]
举例
|
1
|
[root@TBEARZ206458 ~]# docker container exec MyContainer echo "DSB" DSB |
10.删除容器
|
1
|
# Management Commands<br>$ docker container rm [OPTIONS] CONTAINER [CONTAINER...]<br># 旧的命令格式如下:<br>$ docker rm [OPTIONS] CONTAINER [CONTAINER...] |
举例删除掉所有的容器,包含运行当中的
|
1
|
[root@TBEARZ206458 ~]# docker container rm -f $(docker container ls -aq) c77f432bc04b ec2ee18aded3 |

浙公网安备 33010602011771号