zoukankan      html  css  js  c++  java
  • 二、Docker容器基础管理

    一、替换镜像的仓库

    编辑 /etc/docker/daemon.json文件(不存在),加入阿里云的镜像

    {  
      "registry-mirrors": ["https://n6syp70m.mirror.aliyuncs.com"]
    }
    

      

    二、容器命令基础

    ①查看系统信息

    > docker system info 或者 > docker info 

    执行之后会产生如下信息:

    像上图,可以看到当前docker中容器数量是3个,并且3个都停止了。

    ②查看帮助手册

    > docker help
    

    docker 1.13之后,为了方便命令的管理,分为了Management Commands 和 Commands,就像上面获取系统信息的的两个命令分别是Management Command 和 Command两者是兼容的,下面是一些常用命令的对应关系。

     ③命令选项

    上图中可以看到 Options,这里面有 -v --version 这样的命令,

      -叫做短选项

      --叫做长选项

      -a -q 如果组合到一起  -aq 就称为复合选项

      如果什么都不写就是无选项

    三、容器的生命周期管理

    1.创建容器

    A. docker run 命令

    # Management Commands
    $ docker container run [OPTIONS] IMAGE [COMMAND [ARGS...]]
    # 旧命令格式如下:
    $ docker run [OPTIONS] IMAGE [COMMAND [ARGS...]]

    docker container run 命令会在指定的镜像 IMAGE 上创建一个可写的容器(因为镜像是只读的),然后开始运行指定的命令 [COMMAND [ARGS...]]。

      -i 或 --interactive, 交互模式

      -t 或 --tty, 分配一个 pseudo-TTY,即伪终端

      --rm 在容器退出后自动移除

      -p 将容器的端口映射到主机

      -v 或 --volume, 指定数据卷

    举例:

    [root@TBEARZ206458 ~]# docker container run busybox echo "hello xxx" 
    Unable to find image 'busybox:latest' locally latest:
    Pulling from library/busybox bdbbaa22dec6:
    Pull complete Digest:
    sha256:6915be4043561d64e0ab0f8f098dc2ac48e077fe23f488ac24b665166898115a Status:
    Downloaded newer image for busybox:latest
    hello xxx 

    本地找镜像【busybox】找不到然后没从镜像仓库下载,然后运行。

    什么是BusyBox镜像:https://blog.csdn.net/chengqiuming/article/details/79313539

    在执行命令之后,容器就会退出,如果我们需要一个保持运行的容器,最简单的方法就是给这个容器一个可以保持运行的命令或者应用

    对于交互式的进程而言(例如这里的 bash),必须将 -i 和 -t 参数一起使用,才能为容器进程分配一个伪终端,

    通常我们会直接使用 -it  做交互

    通常以 -d 参数指定容器以后台模式运行

    举例:运行一个Ubuntu的镜像

    [root@TBEARZ206458 ~]# docker container run -it ubuntu /bin/bash 
    root@ec2ee18aded3:/#

    ec2ee18aded3 是容器的ID,可以通过 docker container ls -a 查看所有容器

    [root@TBEARZ206458 ~]# docker container ls -a 
    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 命令的作用并不是创建一个容器,而是在一个新的容器中运行一个命令。

    # Management Commands
    $ docker container create [OPTIONS] IMAGE [COMMAND] [ARG...]
    # 旧的命令格式如下:
    $ 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 。

    举例:

    [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.容器的启动与停止

    启动

    # Management Commands
    $ docker container start [OPTIONS] CONTAINER [CONTAINER...]
    # 旧的命令格式如下:
    $ docker start [OPTIONS] CONTAINER [CONTAINER...]  

    停止

    # Management Commands
    $ docker container stop CONTAINER [CONTAINER...]
    # 旧的命令格式如下:
    $ docker stop CONTAINER [CONTAINER...] 

    重启

    # Management Commands
    $ docker container restart CONTAINER [CONTAINER...]
    # 旧的命令格式如下:
    $ docker restart CONTAINER [CONTAINER...] 

    举例:创建一个容器,并启动、关闭、重启。  

    创建
    [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.容器中进程的暂停与恢复  

    暂停容器进程  

    # Management Commands
    $ docker container pause CONTAINER [CONTAINER...]
    # 旧的命令格式如下:
    $ docker pause [OPTIONS] CONTAINER [CONTAINER...]

    举例暂停

    [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
    

    恢复容器进程

    # Management Commands
    $ docker container unpause CONTAINER [CONTAINER...]
    # 旧的命令格式如下:
    $ docker unpause [OPTIONS] CONTAINER [CONTAINER...]

    举例 恢复  

    [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.查看容器列表

    刚刚已经实践过了

    # Management Commands
    $ docker container ls [OPTIONS]
    # 旧的命令格式如下:
    $ docker ps [OPTIONS]

    常用参数

     -a 显示所有的容器

     -q 仅显示 ID

     -s 显示总的文件大小

    5.连接到容器中

    容器一般运行于后台中,需要使用 attach 操作将本地标准输入输出流连接到一个运行中的容器

    # Management Commands
    $ docker container attach [OPTIONS] CONTAINER
    # 旧的命令格式如下:
    $ docker attach [OPTIONS] CONTAINER
    

    举例:

    [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.查看元数据

    # Management Commands
    $ docker container inspect [OPTIONS] CONTAINER [CONTAINER...]
    # 旧的命令格式如下:
    $ docker inspect [OPTIONS] CONTAINER [CONTAINER...]
    

    举例:

    [root@TBEARZ206458 ~]# docker container inspect MyContainer | grep Name
            "Name": "/MyContainer",
                    "Name": "no",
                "Name": "overlay2"
                "Hostname": "MyContainerHostName",
    [root@TBEARZ206458 ~]#
    

    7.显示进程信息

    显示运行中的容器的进程信息

    # Management Commands
    $ docker container top CONTAINER
    # 旧的命令格式如下:
    $ docker top CONTAINER
    

    举例:

    [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.查看文件修改  

    # Management Commands
    $ docker container diff CONTAINER
    # 旧的命令格式如下:
    $ docker diff CONTAINER 

    主要是用于对比容器前后的改变

    举例: 在容器中创建一个文件,并对比改变  

    [root@TBEARZ206458 ~]# docker container attach MyContainer 
    root@MyContainerHostName:/# touch A.txt
    root@MyContainerHostName:/# exit
    [root@TBEARZ206458 ~]# docker container diff MyContainer
    A /A.txt
    C /root
    A /root/.bash_history 

    A代表 Add

    C代表 Change  

      

    9.容器中执行命令

    除了使用 docker container run 执行命令之外,我们还可以在一个运行中的容器中执行命令,使用如下格式:

     $ docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]

    举例

    [root@TBEARZ206458 ~]# docker container exec MyContainer echo "DSB" DSB 

    10.删除容器

    # Management Commands
    $ docker container rm [OPTIONS] CONTAINER [CONTAINER...]
    # 旧的命令格式如下:
    $ docker rm [OPTIONS] CONTAINER [CONTAINER...] 

    举例删除掉所有的容器,包含运行当中的

    [root@TBEARZ206458 ~]# docker container rm -f $(docker container ls -aq) c77f432bc04b ec2ee18aded3  

  • 相关阅读:
    JS-字符串截取方法slice、substring、substr的区别
    Vue中computed和watch的区别
    Vue响应式原理及总结
    JS实现深浅拷贝
    JS中new操作符源码实现
    点击页面出现爱心效果
    js判断对象是否为空对象的几种方法
    深入浅出js实现继承的7种方式
    es6-class
    详解 ESLint 规则,规范你的代码
  • 原文地址:https://www.cnblogs.com/dcz2015/p/12395940.html
Copyright © 2011-2022 走看看