美文网首页
docker 常用命令汇总

docker 常用命令汇总

作者: 流月汐志 | 来源:发表于2019-07-29 17:48 被阅读0次

    一、容器生命周期管理

    1)run

    用法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

    部分OPTIONS说明:

    -d 后台运行容器,并返回容器ID
    -h 指定容器的hostname
    -e 设置容器的环境变量 格式 -e "key=value"
    -i 以交互模式运行容器,通常与 -t 同时使用
    -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
    -m 设置容器所有进程分配的内存总量,单位为B,K,M,G
    -p 指定容器端口与宿主机端口的映射关系,格式为 hostPort:containerPort
    -v 用于挂载一个volume,可以用多个-v指定多个volume,格式为[host-dir]:[container=dir]:[rw|ro]
    --name 指定docker run命令启动的容器的名字,若无此选项,docker将为容器随机分配一个名字
    --add-host 添加一个host指向到容器中

    举例:

    docker run -d -p 8080:8080 --name mytomcat -v /data/webapps:/tomcat/webapps  registry.xp.com:5000/centos_tomcat:1.0.0
    
    2)stop/start/restart

    该命令用于停止/启动/重启一个或者多个容器用法如下

    docker stop/start/restart  [OPTIONS] CONTAINER [CONTAINER...]
    

    举例:

    [root@node1 tmp]# docker stop mytomcat
    mytomcat
    
    3)rm

    用法:docker rm [OPTIONS] CONTAINER [CONTAINER...]

    docker rm用于删除容器,需要注意容器需要处于停止状态下才能删除,否则需要添加-f选项强制删除

    举例:

    [root@node1 tmp]# docker rm mytomcat
    mytomcat
    
    4)pause/unpause

    用法:docker pause/unpause [OPTIONS] CONTAINER [CONTAINER...]

    docker pause/unpause用于暂停/恢复容器中的所有进程
    
    5)create

    用法:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

    docker create 用于创建一个新的容器,但是不启动

    举例:

    [root@mtceshi2 tomcat]# docker create --name mytest docker.io/ubuntu:16.04
    b4fb564b907a6f49b44a6cd874670e124b466baaaeaa587ce333cbd21f296b78
    

    二、容器操作

    1)exec

    用法:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

    docker exec 可以进入正在运行中的容器中,并且运行命令

    部分OPTIONS说明:

    -i 即使没有附加也保持STDIN 打开
    -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用

    通常-it,加上/bin/bash配合使用,用于交互式在容器中运行命令

    举例:

    [root@mtceshi2 tomcat]# docker exec -it mytomcat /bin/bash
    root@0be00e6f223c:/usr/local/tomcat# ls
    LICENSE  NOTICE  RELEASE-NOTES  RUNNING.txt  bin  conf  include  lib  logs  native-jni-lib  temp  webapps  work
    root@0be00e6f223c:/usr/local/tomcat#
    
    2)ps

    用法:docker ps [OPTIONS]

    docker ps 用于列出容器,-a选项可以列出所有容器包括不在运行状态的容器

    举例:

    [root@mtceshi2 tomcat]# docker ps -a
    CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS                     PORTS               NAMES
    0be00e6f223c        ee8                      "catalina.sh run"   4 minutes ago       Up 4 minutes               8080/tcp            mytomcat
    b4fb564b907a        docker.io/ubuntu:16.04   "/bin/bash"         14 minutes ago      Exited (0) 5 minutes ago                       mytest
    
    3)inspect

    用法:docker inspect [OPTIONS] CONTAINER|IMAGE|TASK [CONTAINER|IMAGE|TASK...]

    docker inspect可以查看容器以及镜像的详细信息,如果不添加参数则列出所有信息,可以通过-f或者--format=指定输出模板以便输出指定内容

    举例:

    [root@mtceshi2 tomcat]# docker inspect -f {{.NetworkSettings.Gateway}} mytomcat
    172.17.0.1
    [root@mtceshi2 tomcat]# docker inspect 168
    [
        {
            "Id": "sha256:168add0e5049c5ee484dfc80e3f265536166eff32485e552a96def49e48fa560",
            "RepoTags": [
                "registry.xp.com:5000/task_jenkins:2018-04-19-17-33"
            ],
            "RepoDigests": [
                "registry.xp.com:5000/task_jenkins@sha256:bba3c3bba9b6ba8573c65b09bc83887ce0faaa74d536caf4ca1d4bc45f6f6e62"
            ],
            "Parent": "sha256:0a696ba0f6994e442fa819904fb0e4e4d915a06fe9bcb41d27fc125390b71e3a",
            "Comment": "",
            "Created": "2018-04-19T09:33:56.198475973Z",
            "Container": "c4edf78bfd15ea12ef6f8b105861cd24892d24f5291ce46ff87dd368a1a2856d",
            "ContainerConfig": {
                "Hostname": "d7786e11577f",
                "Domainname": "",
                "User": "",
                "AttachStdin": false,
                "AttachStdout": false,
                "AttachStderr": false,
                "ExposedPorts": {
                    "8080/tcp": {}
      ......
    
    4)export

    用法:docker export [OPTIONS] CONTAINER

    docker export 导出一个容器的文件系统并归档为一个tar包,-o指定输出的文件,代替STDOUT。配合import可以进行容器的迁移工作

    举例:

    [root@mtceshi2 ~]# docker export -o mytomcat.tar mytomcat
    [root@mtceshi2 ~]# ls
    anaconda-ks.cfg  authorized_keys  download-70.cgi  myshell  mytomcat.tar  oneinstack-full.tar.gz
    
    5)attach

    用法:docker attach [OPTIONS] CONTAINER

    docker attach用于连接至正在运行中的容器,需要注意的是attach是到容器的stdin,如果从这个stdin中退出,则会导致容器中止,所以不推荐使用attach连接到容器,而是使用exec

    6)stats

    用法:docker stats [OPTIONS] [CONTAINER...]

    docker stats 显示容器资源使用情况,默认显示运行中的容器

    7)top

    用法:docker top CONTAINER [ps OPTIONS]

    docker top 查看容器运行的进程信息

    举例:

    [root@mtceshi2 ~]# docker top mytomcat
    UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
    root                3190                3174                0                   10:58               ?                   00:00:04            /docker-java-home/jre/bin/java -Djava ... ...
    

    三、系统日志信息

    1)events

    用法:docker events [OPTIONS]

    docker events 从服务中中获取实时时间,主要有下列两个选项

    --since 显示指定的时间戳后的事件
    --until 显示指定的时间戳前的事件

    举例:

    [root@mtceshi2 tomcat]#  docker events  --since="1467302400"
    2018-04-25T10:08:46.703703428+08:00 container create b4fb564b907a6f49b44a6cd874670e124b466baaaeaa587ce333cbd21f296b78 (image=docker.io/ubuntu:16.04, name=mytest)
    2018-04-25T10:17:47.432217561+08:00 network connect 97029965af651a9224a1d9ce0ef8ad7402abab849f36c178c032084ad35b8863 (container=b4fb564b907a6f49b44a6cd874670e124b466baaaeaa587ce333cbd21f296b78, name=bridge, type=bridge)
    2018-04-25T10:17:48.563331357+08:00 container start b4fb564b907a6f49b44a6cd874670e124b466baaaeaa587ce333cbd21f296b78 (image=docker.io/ubuntu:16.04, name=mytest)
    2018-04-25T10:17:48.662116226+08:00 container die b4fb564b907a6f49b44a6cd874670e124b466baaaeaa587ce333cbd21f296b78 (exitCode=0, image=docker.io/ubuntu:16.04, name=mytest)
    2018-04-25T10:17:48.818063630+08:00 network disconnect 97029965af651a9224a1d9ce0ef8ad7402abab849f36c178c032084ad35b8863 (container=b4fb564b907a6f49b44a6cd874670e124b466baaaeaa587ce333cbd21f296b78, name=bridge, type=bridge)
    2018-04-25T10:18:34.597000823+08:00 container create 0be00e6f223c252c4bc6ee7d506b16586bc91571792d5f4022f01240682e1d17 (image=ee8, name=mytomcat)
    2018-04-25T10:18:34.755641018+08:00 network connect 97029965af651a9224a1d9ce0ef8ad7402abab849f36c178c032084ad35b8863 (container=0be00e6f223c252c4bc6ee7d50
    ......
    
    2)history

    用法:docker history [OPTIONS] IMAGE

    docker history 显示指定镜像的创建历史

    举例:

    [root@mtceshi2 ~]# docker history docker.io/tomcat:8.0.50-jre8
    IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
    ee80ae78d593        13 days ago         /bin/sh -c #(nop)  CMD ["catalina.sh" "run"]    0 B                 
    <missing>           13 days ago         /bin/sh -c #(nop)  EXPOSE 8080/tcp              0 B                 
    <missing>           13 days ago         /bin/sh -c set -e  && nativeLines="$(catalina   0 B                 
    <missing>           13 days ago         /bin/sh -c set -eux;   savedAptMark="$(apt-ma   22.41 MB            
    <missing>           13 days ago         /bin/sh -c #(nop)  ENV TOMCAT_ASC_URLS=https:   0 B                 
    <missing>           13 days ago         /bin/sh -c #(nop)  ENV TOMCAT_TGZ_URLS=https:   0 B                 
    <missing>           13 days ago         /bin/sh -c #(nop)  ENV TOMCAT_SHA512=c8923e61   0 B                 
    <missing>           2 weeks ago         /bin/sh -c #(nop)  ENV TOMCAT_VERSION=8.0.50    0 B                 
    <missing>           2 weeks ago         /bin/sh -c #(nop)  ENV TOMCAT_MAJOR=8           0 B                 
    <missing>           2 weeks ago         /bin/sh -c #(nop)  ENV GPG_KEYS=05AB331109497   0 B                 
    <missing>           2 weeks ago         /bin/sh -c apt-get update && apt-get install    1.932 MB            
    <missing>           2 weeks ago         /bin/sh -c set -ex;  currentVersion="$(dpkg-q   2.834 MB            
    <missing>           2 weeks ago         /bin/sh -c #(nop)  ENV OPENSSL_VERSION=1.1.0f   0 B      
    ......
    
    3)logs

    用法:docker logs [OPTIONS] CONTAINER

    docker logs 用于抓取容器的日志

    -f 跟踪日志输出
    --since 显示某个时间戳后的日志

    举例:

    [root@mtceshi2 ~]# docker logs -f mytomcat
    25-Apr-2018 02:18:40.430 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.0.50
    25-Apr-2018 02:18:40.433 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Feb 7 2018 20:06:05 UTC
    25-Apr-2018 02:18:40.433 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.0.50.0
    25-Apr-2018 02:18:40.433 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
    25-Apr-2018 02:18:40.433 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            3.10.0-514.el7.x86_64
    25-Apr-2018 02:18:40.433 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
    25-Apr-2018 02:18:40.433 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/lib/jvm/java-8-openjdk-amd64/jre
    25-Apr-2018 02:18:40.433 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_162-8u162-b12-1~deb9u1-b12
    25-Apr-2018 02:18:40.433 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
    25-Apr-2018 02:18:40.433 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /usr/local/tomcat
    25-Apr-2018 02:18:40.433 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /usr/local/tomcat
    ......
    

    四、镜像管理

    1)build

    用法:docker build [OPTIONS] PATH | URL | -

    docker build 根据Dockerfile构建镜像,后面的PATH指的是工作目录,通常会将Dockerfile,以及镜像构建过程所需文件都存放于此

    常用选项:

    -t 指定镜像tag,格式为 -t name:tag
    -f 指定Dockerfile文件路径,不指定的时候,默认在PATH路径下面寻找名称为Dockerfile的文件
    --no-cache 构建过程中不使用缓存

    举例:

    [root@node1 tomcat_centos]# docker build -t mytomcat:v1 .
    Sending build context to Docker daemon 833.7 MB
    Step 1 : FROM registry:5000/centos:7.3.1611
     ---> 66ee80d59a68
    Step 2 : MAINTAINER liyang liyang@pand-auto.com
     ---> Using cache
     ---> 60bfa8bbf6fb
    Step 3 : RUN echo "Asia/Shanghai" > /etc/timezone
     ---> Using cache
     ---> 91d6fcebdb01
    Step 4 : ENV JAVA_HOME /usr/local/jdk1.8.0_161
    ......
    
    2)import

    用法:docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

    docker import 从归档文件中导入镜像,通常配合export使用进行容器迁移

    举例:

    [root@node1 ~]# docker import mytomcat.tar 
    sha256:002f26b80a6853326eb9e8e9d8d61364455cfadae190fe7beca4a7979a440d6a
    
    3)save/load

    用法:docker save/load [OPTIONS] IMAGE [IMAGE...]

    此命令用于将指定镜像打包或载入tar归档格式文件,可配合使用实现镜像打包迁移;该命令默认输出,输入为STDIN,STDOUT,需要配合重定向使用或者-i,-o选项

    举例:

    [root@node1 ~]# docker save registry.xp.com:5000/centos_tomcat:1.0.0 > mytest.tar
    [root@node1 ~]# ls
    anaconda-ks.cfg      Centos-7.repo  epel-7.repo      mytest.tar    mytomcat.tar
    
    4)rmi

    用法:docker rmi [OPTIONS] IMAGE [IMAGE...]

    docker rmi 删除一个或者多个镜像文件

    举例:

    [root@node1 tomcat_centos]# docker rmi 5fe
    Deleted: sha256:5fecab2eb80c4dafc5cd84afb76f447b7654d59dfc3cb11c57714c0c5b930509
    Deleted: sha256:fdc1755e5dad870c6d2844ece55f0e4317d1200afb0531f3b6fbcb71c15d7455
    Deleted: sha256:28c74e9a384ce0480333f283b9a2ec82b3f95fa53dfe68125f719b93b6a383b9
    Deleted: sha256:0b4e6d9813edcf718ab8c2bc0e6f2d36380e21e92475bf5ac35d5e2d1053ed24
    Deleted: sha256:cbf92f0bcc62a8f428cb473544a5bcffcf37d345f68537bbcdf98fac0a542705
    Deleted: sha256:da47b34f108df0f9103bbe7a1ed06aaadddc03ba69a2ede4dd886bc50316b441
    Deleted: sha256:2b96f44b1595ed0151cec4f10187381eef856c87f1fed10e185e5e98ed4829fa
    Deleted: sha256:20c4a01d9e29d1417a1f52e956e7b1299353764e1a53160ada6803cfac1d4da1
    Deleted: sha256:6ecd665aeb57be32f418fdbe0d026e54ab108d398d10da08f5061459ba36ac19
    Deleted: sha256:f630ca444a787e6474b3e15262c23ab4182222e223de61a2e3e5713d878e33b9
    ......
    
    5)tag

    用法:docker tag IMAGE[:TAG] IMAGE[:TAG]

    docker tag 标记本地镜像,并归入某一仓库

    举例:

    ##将镜像docker.io/tomcat:8.0标记为registry.xp.com:5000/mytomcat:v1
    [root@node1 ~]# docker tag docker.io/tomcat:8.0 registry.xp.com:5000/mytomcat:v1
    [root@node1 ~]# docker images
    REPOSITORY                                   TAG                  IMAGE ID            CREATED             SIZE
    registry.xp.com:5000/centos_tomcat           1.0.0                0e240597b021        6 days ago          585 MB
    tomcat_admin                                 1.0.0                bb537c7aa4ec        3 weeks ago         993.5 MB
    centos_ssh                                   1.0.0                102d164d88d9        3 weeks ago         463 MB
    registry:5000/centos_ssh                     1.0.0                102d164d88d9        3 weeks ago         463 MB
    docker.io/haproxy                            latest               8e518564f5b3        4 weeks ago         70.99 MB
    registry.xp.com:5000/mytomcat                v1                   7aa9e977bdb9        5 weeks ago         455.7 MB
    docker.io/tomcat                             8.0                  7aa9e977bdb9        5 weeks ago         455.7 MB
    registry:5000/centos                         7.3.1611             66ee80d59a68        5 months ago        191.8 MB
    docker.io/w564791/pod-infrastructure         latest               f66f4bd9b894        10 months ago       205.8 MB
    
    6)commit

    用法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

    docker commit 可以将一个容器固化为一个新的镜像,可用于制作特定镜像

    举例:

    [root@mtceshi2 ~]# docker commit mytomcat mytomcat_test:v1
    sha256:7e489a0b57ea74fb99e5cf4eebe0552547f8bb5eb84510216ab2e3c79b637634
    [root@mtceshi2 ~]# docker images
    REPOSITORY                                   TAG                  IMAGE ID            CREATED             SIZE
    mytomcat_test                                v1                   7e489a0b57ea        4 seconds ago       553.9 MB
    registry.xp.com:5000/task_jenkins            2018-04-19-17-33     168add0e5049        5 days ago          619.7 MB
    registry.xp.com:5000/vrbs_jenkins            2018-04-19-17-29     4cc11ed82557        5 days ago          589.8 MB
    registry.xp.com:5000/vehicle_jenkins         2018-04-19-17-29     0f0cb95a951b        5 days ago          562 MB
    registry.xp.com:5000/sync_jenkins            2018-04-19-17-27     0558533a3c09        5 days ago          596.5 MB
    registry.xp.com:5000/mpush_jenkins           2018-04-19-17-27     4efffbea2054        5 days ago          593.4 MB
    ......
    
    7)images

    用法:docker images [OPTIONS] [REPOSITORY[:TAG]]

    docker images 用于显示本地镜像

    举例:

    [root@mtceshi2 ~]# docker images
    REPOSITORY                                   TAG                  IMAGE ID            CREATED             SIZE
    mytomcat_test                                v1                   7e489a0b57ea        4 seconds ago       553.9 MB
    registry.xp.com:5000/task_jenkins            2018-04-19-17-33     168add0e5049        5 days ago          619.7 MB
    registry.xp.com:5000/vrbs_jenkins            2018-04-19-17-29     4cc11ed82557        5 days ago          589.8 MB
    registry.xp.com:5000/vehicle_jenkins         2018-04-19-17-29     0f0cb95a951b        5 days ago          562 MB
    registry.xp.com:5000/sync_jenkins            2018-04-19-17-27     0558533a3c09        5 days ago          596.5 MB
    registry.xp.com:5000/mpush_jenkins           2018-04-19-17-27     4efffbea2054        5 days ago          593.4 MB
    ......
    

    五、镜像仓库命令

    1)login/logout

    用法:docker login [OPTIONS] [SERVER] 或 docker logout [SERVER]

    该命令用于登入登出需要认证的docker registry;登入时可以使用-p,-u指定用户名密码

    2)pull/push

    用法:

    docker pull [OPTIONS] NAME[:TAG|@DIGEST]
    docker push [OPTIONS] NAME[:TAG]
    

    docker pull用于从docker registry中拉去镜像,docker push则用于将本地镜像推送到docker registry中

    举例:

    [root@node1 ~]# docker pull redis
    Using default tag: latest
    Trying to pull repository docker.io/library/redis ... 
    latest: Pulling from docker.io/library/redis
    
    b0568b191983: Already exists 
    6637dc5b29fe: Already exists 
    2fd86759b5ff: Pull complete 
    0f04862b5a3b: Pull complete 
    2db0056aa977: Pull complete 
    Digest: sha256:6b9f935e89af002225c0dcdadf1fd74245b4cc1e3e91222f7e4769c236cf80d4
    
    3)search

    用法:docker search [OPTIONS] TERM

    docker search 用于搜索docker hub上的镜像

    举例:

    [root@node1 ~]# docker search tomcat
    INDEX       NAME                                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    docker.io   docker.io/tomcat                                Apache Tomcat is an open source implementa...   1812      [OK]       
    docker.io   docker.io/tomee                                 Apache TomEE is an all-Apache Java EE cert...   50        [OK]       
    docker.io   docker.io/dordoka/tomcat                        Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 ba...   48                   [OK]
    docker.io   docker.io/davidcaste/alpine-tomcat              Apache Tomcat 7/8 using Oracle Java 7/8 wi...   24                   [OK]
    docker.io   docker.io/consol/tomcat-7.0                     Tomcat 7.0.57, 8080, "admin/admin"              16                   [OK]
    docker.io   docker.io/cloudesire/tomcat                     Tomcat server, 6/7/8                            15                   [OK]
    docker.io   docker.io/bitnami/tomcat                        Bitnami Tomcat Docker Image                     13                   [OK]
    docker.io   docker.io/tutum/tomcat                          Base docker image to run a Tomcat applicat...   9                    
    docker.io   docker.io/jeanblanchard/tomcat                  Minimal Docker image with Apache Tomcat         8                    
    docker.io   docker.io/meirwa/spring-boot-tomcat-mysql-app   a sample spring-boot app using tomcat and ...   8                    [OK]
    docker.io   docker.io/aallam/tomcat-mysql                   Debian, Oracle JDK, Tomcat & MySQL              6                    [OK]
    docker.io   docker.io/rightctrl/tomcat                      CentOS , Oracle Java, tomcat application s...   3                    [OK]
    docker.io   docker.io/fabric8/tomcat-8                      Fabric8 Tomcat 8 Image                          2                    [OK]
    docker.io   docker.io/99taxis/tomcat7                       Tomcat7                                         1                    [OK]
    ......
    

    六、docker环境信息

    1)info

    docker info 命令可用于检查docker是否安装正确,如果安装正确,该命令会输出docker的相关配置信息

    举例:

    [root@mtceshi2 docker]# docker info
    Containers: 0
     Running: 0
     Paused: 0
     Stopped: 0
    Images: 59
    Server Version: 1.12.6
    Storage Driver: devicemapper
     Pool Name: docker-252:17-68151391-pool
     Pool Blocksize: 65.54 kB
     Base Device Size: 10.74 GB
     Backing Filesystem: xfs
     Data file: /dev/loop0
     Metadata file: /dev/loop1
     Data Space Used: 3.136 GB
     Data Space Total: 107.4 GB
     Data Space Available: 41.44 GB
     Metadata Space Used: 5.751 MB
     ......
    
    2)version

    docker version 命令一般结合docker info使用提取详细的docker环境信息

    举例:

    [root@mtceshi2 docker]# docker  version
    Client:
     Version:         1.12.6
     API version:     1.24
     Package version: docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64
     Go version:      go1.8.3
     Git commit:      3e8e77d/1.12.6
     Built:           Tue Jan 30 09:17:00 2018
     OS/Arch:         linux/amd64
    
    Server:
     Version:         1.12.6
     API version:     1.24
     Package version: docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64
     Go version:      go1.8.3
     Git commit:      3e8e77d/1.12.6
     Built:           Tue Jan 30 09:17:00 2018
     OS/Arch:         linux/amd64
    

    相关文章

      网友评论

          本文标题:docker 常用命令汇总

          本文链接:https://www.haomeiwen.com/subject/zcxirctx.html