zoukankan      html  css  js  c++  java
  • Docker 常用命令——容器

    1.新建并启动容器

    docker run [option] images [command][arg]    #根据镜像新建容器并运行。如果本地没有镜像则从docker hub上拉取。
    --name 为容器指定名称。
    -d    后台运行容器,并返回容器id
    -i    交互模式运行容器,通常与 -t同时用
    -t    为容器分配伪输入终端。
    -P    随机端口映射
    -p    指定端口映射,有以下四种格式
        ip:hostport:ContainerPort
        ip::containerPort
        HostPort:ContainerPort
        ContainerPort
    docker run centos       #创建/运行/退出容器
    docker run -t centos    #创建容器,并进入伪终端,但不能操作。ctrl+c 退出,容器不退出。
    docker run -it centos
    docker run -it --name mycentos centos
    docker run -d centos    #以后台进程方式创建容器并运行,但因为没有可交互的前台进程,所以又被立刻终止。故docker ps 看不到。
    [root@localhost ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    redis               latest              a55fbf438dfd        8 days ago          95MB
    mysql               latest              7bb2586065cd        8 days ago          477MB
    nginx               latest              2bcb04bdb83f        8 days ago          109MB
    centos              latest              9f38484d220f        2 weeks ago         202MB
    hello-world         latest              fce289e99eb9        3 months ago        1.84kB
    docker run -it 9f38484d220f    #启动交互式容器
    [root@8e0ffee781f1 /]# ps -ef
    UID        PID  PPID  C STIME TTY          TIME CMD
    root         1     0  0 02:23 pts/0    00:00:00 /bin/bash
    root        16     1  0 02:23 pts/0    00:00:00 ps -ef
    [root@8e0ffee781f1 /]# exit
    exit
    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@localhost ~]#  docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
    8e0ffee781f1        9f38484d220f        "/bin/bash"         4 minutes ago       Exited (0) 3 minutes ago                       pensive_lumiere
    3af63c5c69c6        hello-world         "/hello"            42 hours ago        Exited (0) 42 hours ago                        pensive_dubinsky
    [root@localhost ~]# docker rename 8e0ffee781f1 mycentos
    [root@localhost ~]# docker start mycentos
    mycentos
    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    8e0ffee781f1        9f38484d220f        "/bin/bash"         40 minutes ago      Up 6 seconds                            mycentos
    [root@localhost ~]# docker stats mycentos
    CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
    8e0ffee781f1        mycentos            0.00%               380KiB / 991.2MiB   0.04%               656B / 0B           0B / 0B             1
    [root@localhost ~]# docker top mycentos
    UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
    root                4675                4659                0                   10:44               pts/0               00:00:00            /bin/bash
    [root@localhost ~]# docker attach mycentos
    不关容器,安全退出: ctrl +p   ctrl+q
    [root@localhost ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    8e0ffee781f1        9f38484d220f        "/bin/bash"         3 hours ago         Up 2 hours                              mycentos
    [root@localhost ~]# docker images centos
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    centos              latest              9f38484d220f        2 weeks ago         202MB
    [root@localhost ~]# docker run -it --name mycentos01 centos    #重新打开一个容器,并命名为mycentos01
    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
    ed1315df6320        centos              "/bin/bash"         About a minute ago   Up About a minute                       mycentos01
    8e0ffee781f1        9f38484d220f        "/bin/bash"         3 hours ago          Up 2 hours                              mycentos

    2.列出容器

    docker ps -a    显示当前或曾经打开的容器
    docker ps -l    显示上一次运行的容器
    docker ps -n 3  显示上3次运行的容器
    docker ps -ql   只显示上一次运行的容器ID

    3.退出容器

    exit    #退出并关闭容器
    ctrl+p,crl+q #退出但不关闭容器

    4.停止容器

    docker stop  容器 ID或name
    docker stop -t n 容器 ID或name # Seconds to wait for stop before killing it (default 10) 杀掉容器前等待多少秒(默认10s)
    直接关闭
    docker kill 容器 ID或name
    [root@localhost ~]# docker stop mycentos mycentos01    #同时停止多个容器
    mycentos
    mycentos01
    [root@localhost ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

    4.启动容器

    docker start    容器 ID或name
    docker restart  容器 ID或name
    [root@localhost ~]# docker start mycentos mycentos01
    mycentos
    mycentos01
    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    ed1315df6320        centos              "/bin/bash"         9 minutes ago       Up 36 seconds                           mycentos01
    8e0ffee781f1        9f38484d220f        "/bin/bash"         3 hours ago         Up 36 seconds                           mycentos

    5.重启容器

    docker restart 容器 ID或name

    6.删除停止运行的容器

    docker rm 容器 ID或name
    docker rm -f 强制删除容器,即使在运行
    docker rm -f $(docker ps -qa)      # 删除全部容器
    docker ps -qa | xargs docker rm    # 删除全部已停止容器
    docker rmi 删除镜像
    [root@localhost ~]# docker ps -n2
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                       PORTS               NAMES
    ed1315df6320        centos              "/bin/bash"         23 minutes ago      Exited (137) 7 minutes ago                       mycentos01
    8e0ffee781f1        9f38484d220f        "/bin/bash"         3 hours ago         Exited (137) 8 minutes ago                       mycentos
    [root@localhost ~]# docker rm mycentos01
    mycentos01
    [root@localhost ~]# docker ps -n2
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                       PORTS               NAMES
    8e0ffee781f1        9f38484d220f        "/bin/bash"         3 hours ago         Exited (137) 9 minutes ago                       mycentos
    3af63c5c69c6        hello-world         "/hello"            45 hours ago        Exited (0) 45 hours ago                          pensive_dubinsky

    7.查看所有容器的实时资源占用情况

    docker stats

    8.查看容器日志

    docker logs -f -t --tail 10 容器 ID或name
    -f 持续刷新最新日志
    -t 显示时间戳
    --tail 显示最后几行
    [root@localhost ~]# docker run -d --name mycentos1 centos
    ba18b348bd9857bde9b25a62d848d6239c1c7c0de302a8bc279185a758efd861
    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@localhost ~]# docker run -d --name mycentos2 centos /bin/bash -c "while true;do echo Hello World;sleep 3;done"
    21494ef841e27c69877afaf1a0be5ae2bb7d32d6862eb7bfa1e6eb237f04efa3
    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    21494ef841e2        centos              "/bin/bash -c 'while…"   2 seconds ago       Up 2 seconds                            mycentos2
    [root@localhost ~]# docker logs -f -t --tail 5 21494ef841e2
    2019-04-04T07:37:43.721260403Z Hello World
    2019-04-04T07:37:46.721904929Z Hello World
    2019-04-04T07:37:49.723204790Z Hello World
    2019-04-04T07:37:52.724042843Z Hello World
    2019-04-04T07:37:55.725116649Z Hello World
    ...

    9.查看容器内进程

    docker top 容器 ID或name
    [root@localhost ~]# docker run -d centos /bin/bash -c "while true;do echo Nihao;sleep 2 ;done"
    4768a70886fcb74cdf00cb19d142fb503a18d2390406dc31ad533d697b423f46
    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    4768a70886fc        centos              "/bin/bash -c 'while…"   3 seconds ago       Up 2 seconds                            affectionate_cori
    [root@localhost ~]# docker top 4768a70886fc
    UID     PID     PPID    C    STIME    TTY    TIME        CMD
    root    9379    9364    0    15:48    ?      00:00:00    /bin/bash -c while true;do echo Nihao;sleep 2 ;done
    root    9427    9379    0    15:48    ?      00:00:00    sleep 2

    10.查看容器细节

    docker inspect 容器 ID或name
    [root@localhost ~]# docker inspect 4768a70886fc
    [
        {
            "Id": "4768a70886fcb74cdf00cb19d142fb503a18d2390406dc31ad533d697b423f46",
            "Created": "2019-04-04T07:48:20.460764642Z",
            "Path": "/bin/bash",
            "Args": [
                "-c",
                "while true;do echo Nihao;sleep 2 ;done"
            ],
            "State": {
                "Status": "running",
                "Running": true,
                "Paused": false,
                "Restarting": false,
                ....
    11.进入容器
    docker attach 容器 ID或name
    docker exec -t -w -u -e 容器 ID或name 命令              # 功能更强大,也能实现登陆容器内部
      -d, --detach Detached mode: run command in the background
      -e, --env list Set environment variables
      -i, --interactive Keep STDIN open even if not attached
      -t, --tty Allocate a pseudo-TTY
      -u, --user string Username or UID (format: <name|uid>[:<group|gid>])
      -w, --workdir string Working directory inside the container
    [root@localhost ~]# docker exec -t -w /tmp -uroot -e LANG=en 4768a70886fc ls
    ks-script-eC059Y  yum.log
    [root@localhost ~]# docker exec 4768a70886fc ls /tmp
    ks-script-eC059Y
    yum.log
    [root@localhost ~]# docker exec -it 4768a70886fc ls /tmp
    ks-script-eC059Y  yum.log
    [root@localhost ~]# docker exec -it 4768a70886fc /bin/bash    
    [root@4768a70886fc /]# ls
    anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

    12. docker cp

        Copy files/folders between a container and the local filesystem 在本地系统和容器间copy文件或文件夹
    [root@localhost ~]# docker cp anaconda-ks.cfg 4768a70886fc:/home
    [root@localhost ~]# docker exec 4768a70886fc ls /home
    anaconda-ks.cfg
    
    [root@localhost ~]# docker exec -it 4768a70886fc ls /tmp
    ks-script-eC059Y  yum.log
    [root@localhost ~]# docker cp 4768a70886fc:/tmp/yum.log /tmp
    [root@localhost ~]# ls -l /tmp
    总用量 8
    -rw-------. 1 root root   0 3月   6 01:34 yum.log

    docker run -d /bin/bash -c 的注意点

    重启docker 后,会继续执行创建docker 时指定的脚本。
    相当于该容器运行的是 镜像+shell 的组合模板。
    docker attach 登陆容器后,如果command 命令是前台进程就会一直执行,而不能做其他操作。
  • 相关阅读:
    表单自动填充autocomplete的兼容性方案
    函数的默认参数值
    利用zookeeper搭建hadoop HA集群
    zookeeper设置开机启动项
    zookeeper集群挂了的恢复流程
    zookeeper集群搭建
    docker 安装ElasticSearch的中文分词器IK
    [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    把mysql服务设置开机启动项
    docker-compose的使用
  • 原文地址:https://www.cnblogs.com/plluoye/p/10658522.html
Copyright © 2011-2022 走看看