二、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/bash
78e90b182e622174cd1028b00ec5efe5a8d572e70787279e84a36abd539b85a4
[root@TBEARZ206458 ~]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
78e90b182e62        ubuntu              "/bin/bash"         9 seconds ago       Created                                        MyContainer
c77f432bc04b        ubuntu              "/bin/bash"         27 minutes ago      Created                                        TestUbuntu
ec2ee18aded3        ubuntu              "/bin/bash"         About an hour ago   Exited (0) 3 minutes ago                       exciting_morse
 
[root@TBEARZ206458 ~]# docker container start MyContainer
MyContainer
[root@TBEARZ206458 ~]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
78e90b182e62        ubuntu              "/bin/bash"         51 seconds ago      Up 2 seconds                                   MyContainer
c77f432bc04b        ubuntu              "/bin/bash"         28 minutes ago      Created                                        TestUbuntu
ec2ee18aded3        ubuntu              "/bin/bash"         About an hour ago   Exited (0) 3 minutes ago                       exciting_morse
 
[root@TBEARZ206458 ~]# docker container stop MyContainer
MyContainer
[root@TBEARZ206458 ~]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                     PORTS               NAMES
78e90b182e62        ubuntu              "/bin/bash"         About a minute ago   Exited (0) 2 seconds ago                       MyContainer
c77f432bc04b        ubuntu              "/bin/bash"         28 minutes ago       Created                                        TestUbuntu
ec2ee18aded3        ubuntu              "/bin/bash"         About an hour ago    Exited (0) 4 minutes ago                       exciting_morse
 
[root@TBEARZ206458 ~]# docker container restart MyContainer
MyContainer
[root@TBEARZ206458 ~]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                     PORTS               NAMES
78e90b182e62        ubuntu              "/bin/bash"         About a minute ago   Up 1 second                                    MyContainer
c77f432bc04b        ubuntu              "/bin/bash"         29 minutes ago       Created                                        TestUbuntu
ec2ee18aded3        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 MyContainer
MyContainer
[root@TBEARZ206458 ~]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
78e90b182e62        ubuntu              "/bin/bash"         2 hours ago         Up 2 hours (Paused)                          MyContainer
c77f432bc04b        ubuntu              "/bin/bash"         2 hours ago         Created                                      TestUbuntu
ec2ee18aded3        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 MyContainer
MyContainer
[root@TBEARZ206458 ~]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
78e90b182e62        ubuntu              "/bin/bash"         2 hours ago         Up 2 hours                                   MyContainer
c77f432bc04b        ubuntu              "/bin/bash"         2 hours ago         Created                                      TestUbuntu
ec2ee18aded3        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 MyContainer
root@MyContainerHostName:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@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 MyContainer
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                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  

 

posted @ 2020-03-06 16:16  LXMZQ  阅读(116)  评论(0)    收藏  举报