Docker基本命令

镜像常用命令

• 命令列表
  – docker images    //查看镜像列表
  – docker history   //查看镜像制作历史
  – docker inspect   //查看镜像底层信息
  – docker pull      //下载镜像
  – docker push      //上传镜像
  – docker rmi       //删除本地镜像
  – docker save      //镜像另存为tar包
  – docker load      //使用tar包导入镜像
  – docker search    //搜索镜像
  – docker tag       //修改镜像名称和标签

docker images

• 查看镜像列表
  – REPOSITORY  //镜像仓库名称
  – TAG         //镜像标签
  – IMAGE ID    //镜像ID
  – CREATED     //创建时间
  – SIZE        //大小

• 镜像ID: Docker镜像通过镜像ID进行识别。镜像ID是一个64字符的十六进制的字符串。但是当我们运行镜像时,通常我们不会使用镜像ID来引用镜像,而是使用镜像名来引用。

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              latest              358bf47a7a64        3 weeks ago         203.5 MB

docker history

• 查看镜像历史
  – 了解镜像制作过程
  – 详细参考后面的dockerfile内容

[root@localhost ~]# docker history centos
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
358bf47a7a64        3 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0 B                 
fb2a47779ef8        3 weeks ago         /bin/sh -c #(nop)  LABEL name=CentOS Base Ima   0 B                 
99d067612410        3 weeks ago         /bin/sh -c #(nop) ADD file:7441d818786942af84   203.5 MB            

docker inspect

• 查看镜像底层信息
  – 了解镜像环境变量、存储卷、标签等信息
[root@localhost ~]# docker inspect centos
… …
{
"Id": "sha256:980e0e4c79ec933406e467a296ce3b86685e6b42eed2f873745e6a91d718e37a",
"RepoTags": [
"centos:latest"
],
"RepoDigests": [],
"Parent": "",
"Comment": "",
"Created": "2016-09-06T21:10:20.397787682Z",
"Container": "37446a1771cbec3e85b76d9159fd6a5a92743655cb92a65661e8a174bad81c7e“
… …

docker rmi

• 删除本地镜像
  – 注意:启动容器时删除镜像会提示错误
[root@localhost ~]# docker rmi centos
Error response from daemon: conflict: unable to remove repository reference
"centos" (must force) - container 3daba799135c is using its referenced image
980e0e4c79ec

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              latest              358bf47a7a64        3 weeks ago         203.5 MB
busybox             latest              789355058656        7 weeks ago         1.129 MB
mysql               latest              82960a1161e0        14 months ago       383.4 MB
nginx               latest              affde4c9c317        14 months ago       181.4 MB
[root@localhost ~]# docker rmi busybox
Untagged: busybox:latest
Deleted: 789355058656ec2ca0a856283e2597852ccd444548c9ef4fcbf8c9c24a73e169
Deleted: 97d69bba9a9d8406055d0fdc38a7f00162823ee5ca3751fc71531cb210204ff9
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              latest              358bf47a7a64        3 weeks ago         203.5 MB
mysql               latest              82960a1161e0        14 months ago       383.4 MB
nginx               latest              affde4c9c317        14 months ago       181.4 MB

docker save|load

• 保存本地镜像另存为tar文件
  – 方便其他人使用tar包导入镜像
[root@localhost ~]# docker save centos > centos.tar

• 使用tar包文件导入镜像
[root@localhost ~]# docker load < centos.tar

docker search busybox

– 从官方源搜索镜像 NAME:镜像仓库源的名称 DESCRIPTION:镜像的描述 OFFICIAL:是否docker官方发布

[root@localhost ~]# docker search busybox
NAME                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
busybox                     Busybox base image.                             1168      [OK]       
progrium/busybox                                                            66                   [OK]
hypriot/rpi-busybox-httpd   Raspberry Pi compatible Docker Image with ...   39                   
radial/busyboxplus          Full-chain, Internet enabled, busybox made...   17                   [OK]
hypriot/armhf-busybox       Busybox base image for ARM.                     8                    
armhf/busybox               Busybox base image.                             4                    
arm32v7/busybox             Busybox base image.                             3                    
prom/busybox                Prometheus Busybox Docker base images           2                    [OK]
armel/busybox               Busybox base image.                             2                    
s390x/busybox               Busybox base image.                             2                    
onsi/grace-busybox                                                          2                    
p7ppc64/busybox             Busybox base image for ppc64.                   2                    
aarch64/busybox             Busybox base image.                             2                    
arm32v6/busybox             Busybox base image.                             1                    
spotify/busybox             Spotify fork of https://hub.docker.com/_/b...   1                    
ppc64le/busybox             Busybox base image.                             1                    
i386/busybox                Busybox base image.                             1                    
concourse/busyboxplus                                                       0                    
cfgarden/garden-busybox                                                     0                    
trollin/busybox                                                             0                    
yauritux/busybox-curl       Busybox with CURL                               0                    
ggtools/busybox-ubuntu      Busybox ubuntu version with extra goodies       0                    [OK]
amd64/busybox               Busybox base image.                             0                    
ddn0/busybox                fork of official busybox                        0                    [OK]
arm64v8/busybox             Busybox base image.                             0  

docker tag

• 重命名镜像名称(复制)
docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              latest              358bf47a7a64        3 weeks ago         203.5 MB

[root@localhost ~]# docker tag centos v1
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
v1                  latest              358bf47a7a64        3 weeks ago         203.5 MB
centos              latest              358bf47a7a64        3 weeks ago         203.5 MB

[root@localhost ~]# docker tag centos:latest v2:test
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
v1                  latest              358bf47a7a64        3 weeks ago         203.5 MB
v2                  test                358bf47a7a64        3 weeks ago         203.5 MB
centos              latest              358bf47a7a64        3 weeks ago         203.5 MB

容器常用命令

• 命令列表
  – docker run         //运行容器
  – docker ps          //查看容器列表
  – docker stop        //关闭容器
  – docker start       //启动容器
  – docker restart     //重启容器
  – docker attach|exec //进入容器
  – docker inspect     //查看容器底层信息
  – docker top         //查看容器进程列表 
  – docker rm          //删除容器

docker run

• 使用镜像启动容器
[root@localhost ~]# docker run -it nginx bash
root@065d2c789646:/# exit 

• 使用镜像启动容器放在后台
[root@localhost ~]# docker run -itd centos bash
b8f218f2341c12655e6092d7d2e7fd5229824fdefce84075fb3a9569ebf82079
[root@localhost ~]#

docker ps

• 列出容器列表
  – docker ps 查看正在运行的容器
  – docker ps -a 查看所有容器列表
  – docker ps -aq 仅显示容器id

• 容器ID: 64字符的十六进制的字符串来定义容器ID,它是容器的唯一标识符。容器之间的交互是依靠容器ID识别的,由于容器ID的字符太长,我们通常只需键入容器ID的前4个字符即可。

[root@localhost ~]# docker  ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
ef58c24c92ef        centos              "bash"              15 seconds ago      Up 14 seconds                           insane_torvalds     

[root@localhost ~]# docker  ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
ef58c24c92ef        centos              "bash"              22 seconds ago      Up 21 seconds                                     insane_torvalds     
a4e1a0a525dc        centos              "bash"              4 minutes ago       Exited (137) 3 minutes ago                        tender_ptolemy      
065d2c789646        nginx               "bash"              16 minutes ago      Exited (0) 12 minutes ago                         dreamy_bardeen      
56e8898c730c        centos              "bash"              30 minutes ago      Exited (137) 26 minutes ago                       serene_brattain     
cd7551f2f4ad        nginx               "bash"              15 hours ago        Exited (127) 25 minutes ago                       cranky_hoover       
 
[root@localhost ~]# docker  ps -aq
ef58c24c92ef
a4e1a0a525dc
065d2c789646
56e8898c730c
cd7551f2f4ad

docker stop|start|restart

• 管理容器
  – docker stop 关闭容器
  – docker start 开启容器
  – docker restart 重启容器
[root@localhost ~]# docker  ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
ef58c24c92ef        centos              "bash"              15 seconds ago      Up 14 seconds                           insane_torvalds     

[root@server0 ~]# docker stop ef5

docker attach|exec

• 进入容器
  – docker attach 进入容器,exit会导致容器关闭
  – docker exec 进入容器,退出时不会关闭容器
[root@localhost ~]# docker  ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
ef58c24c92ef        centos              "bash"              9 minutes ago       Up 40 seconds                           insane_torvalds     
065d2c789646        nginx               "bash"              25 minutes ago      Up 3 seconds        80/tcp, 443/tcp     dreamy_bardeen  

[root@localhost ~]# docker attach ef5
[root@ef58c24c92ef /]# exit
exit
[root@localhost ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
065d2c789646        nginx               "bash"              28 minutes ago      Up 3 minutes        80/tcp, 443/tcp     dreamy_bardeen      

[root@localhost ~]# docker exec -it 065d bash
root@065d2c789646:/# exit 
exit
[root@localhost ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
065d2c789646        nginx               "bash"              29 minutes ago      Up 4 minutes        80/tcp, 443/tcp     dreamy_bardeen      
[root@localhost ~]# 

docker inspect

• 查看容器底层信息
[root@localhost ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
065d2c789646        nginx               "bash"              31 minutes ago      Up 6 minutes        80/tcp, 443/tcp     dreamy_bardeen    ntic_bard

[root@localhost ~]# docker inspect 065d
Id": "065d2c789646eb6c564f21afdace2303c04f123ed64a8e71fcbcd9c014544389",
    "Created": "2017-12-26T01:52:15.761726948Z",
    "Path": "bash",
    "Args": [],
    "State": {
........

docker top

• 查看容器进程列表
[root@localhost ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
065d2c789646        nginx               "bash"              31 minutes ago      Up 6 minutes        80/tcp, 443/tcp     dreamy_bardeen    ntic_bard

[root@localhost ~]# docker  top 065d
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                5493                13925               0                   10:17               pts/4               00:00:00            bash

docker rm

• 删除容器
  – 注意,删除正在运行的容器时会提示错误,先关闭容器,才能删除。
[root@localhost ~]# docker ps -a 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
ef58c24c92ef        centos              "bash"              24 minutes ago      Exited (0) 12 minutes ago                         insane_torvalds     
065d2c789646        nginx               "bash"              40 minutes ago      Up 15 minutes                 80/tcp, 443/tcp     dreamy_bardeen      
56e8898c730c        centos              "bash"              54 minutes ago      Exited (137) 50 minutes ago                       serene_brattain     
cd7551f2f4ad        nginx               "bash"              16 hours ago        Exited (127) 50 minutes ago                       cranky_hoover       

[root@localhost ~]# docker  rm 065d
Error response from daemon: Cannot destroy container 065d: Conflict, You cannot remove a running container. Stop the container before attempting removal or use -f
Error: failed to remove containers: [065d]

[root@localhost ~]# docker rm 56e8
56e8

[root@localhost ~]# docker ps -a 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
ef58c24c92ef        centos              "bash"              25 minutes ago      Exited (0) 13 minutes ago                         insane_torvalds     
065d2c789646        nginx               "bash"              42 minutes ago      Up 16 minutes                 80/tcp, 443/tcp     dreamy_bardeen      
cd7551f2f4ad        nginx               "bash"              16 hours ago        Exited (127) 51 minutes ago                       cranky_hoover       
[root@localhost ~]#