Docker经常使用命令

Docker如今基本成为了运维人员必须掌握的专业技能之一,而docker默认没有图形界面管理,所以掌握docker-client命令行操做就显得十分重要。html

  • 安装docker指定版本:
# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo或者使用阿里源# curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo# yum makecache fast# yum install -y docker-ce-18.03.0.ce           #以安装docker-ce-18.03.0版本为例# systemctl start docker && systemctl enable docker


search

docker search 用来搜索可用的相关镜像。linux

  • 从docker仓库中搜索nginx镜像:
# docker search nginxNAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                                                  Official build of Nginx.                        11083               [OK]

pull

docker pull 下载指定镜像。nginx

  • 从docker仓库中下载nginx镜像:
# docker pull docker.io/nginxUsing default tag: latest
latest: Pulling from library/nginx
f7e2b70d04ae: Pull complete 
08dd01e3f3ac: Pull complete 
d9ef3a1eb792: Pull complete 
Digest: sha256:98efe605f61725fd817ea69521b0eeb32bef007af0e3d0aeb6258c6e6fe7fc1a
Status: Downloaded newer image for nginx:latest

docker pull 时能够指定镜像标签,不指定默认为latest。docker

images

docker images 查看已下载的本地docker镜像。shell

  • 查看已下载的本地docker镜像:
# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              881bd08c0b08        13 days ago         109MB

能够看到刚刚下载到本地的 nginx:latest 镜像。centos

run

docker run 启动docker镜像为容器。bash

  • 启动nginx镜像为容器:
# docker run -itd -p 80:80 --name nginx nginx:latest a38795771660b7e52ba7719dd936fbda36666ceff95fe66e79b6b845f278e9e9

上面命令后加上/bin/bash就能够进入到容器中。服务器

docker run 有一些参数选项:app

-i:interactive交互

-t:tty终端

-d:daemon后台启动

-p:端口映射,前面的端口为宿主机监听端口,后面的端口为容器监听端口

--name:指定启动后容器的名字

--rm:退出容器后删除容器

使用 docker run 启动镜像为容器以前,若是本地没有镜像,会自动pull镜像。运维

ps

docker ps 查看当前正在运行中的容器。

  • 查看当前正在运行中的容器:
# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
a38795771660        nginx:latest        "nginx -g 'daemon of…"   9 minutes ago       Up 9 minutes        0.0.0.0:80->80/tcp   nginx

docker ps 还有一个经常使用的参数选项:

-a:查看当前系统中全部的容器,包括运行中、暂停中和已中止的容器

inspect

docker inspect 查看容器的详细信息。

  • 查看nginx容器的详细信息:
# docker inspect nginx |grep -i ipaddr
            "SecondaryIPAddresses": null,            "IPAddress": "172.17.0.2",                    "IPAddress": "172.17.0.2",

查看容器的详细信息,并从信息中过滤IP地址。

exec

docker exec 在docker容器中执行命令。

  • 在docker容器中执行df -h命令:
# docker exec nginx df -hFilesystem                       Size  Used Avail Use% Mounted on
overlay                           36G  3.7G   32G  11% /
tmpfs                             64M     0   64M   0% /dev
tmpfs                            1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos_master1-root   36G  3.7G   32G  11% /etc/hosts
shm                               64M     0   64M   0% /dev/shm
tmpfs                            1.9G     0  1.9G   0% /proc/acpi
tmpfs                            1.9G     0  1.9G   0% /proc/scsi
tmpfs                            1.9G     0  1.9G   0% /sys/firmware

已经启动的nginx容器能够这样进入:

# docker exec -it nginx bash

此处的 -it 参数选项与 docker run 中参数做用一致。

# docker exec nginx touch /tmp/1.txt# docker exec -it nginx bashroot@a38795771660:/# ls /tmp/1.txt

start/stop

docker start/stop 启动、中止指定的容器。

  • 中止nginx容器,再启动nginx容器:
# docker stop nginxnginx# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES# docker ps -aCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
a38795771660        nginx:latest        "nginx -g 'daemon of…"   28 minutes ago      Exited (0) 9 seconds ago                       nginx# docker start nginxnginx# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
a38795771660        nginx:latest        "nginx -g 'daemon of…"   29 minutes ago      Up 30 seconds       0.0.0.0:80->80/tcp   nginx

另外,还能够使用 docker restart 来重启指定的容器。

kill

docker kill 用来kill掉运行中的容器。

  • kill掉运行中的nginx容器:
# docker kill nginxnginx# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES# docker ps -aCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
a38795771660        nginx:latest        "nginx -g 'daemon of…"   37 minutes ago      Exited (137) 15 seconds ago                       nginx

docker kill 与 docker stop 做用相似,但后者要“温柔”一些。遇到 docker stop 也没法关闭的容器,能够使用 docker kill 强行关闭。

rm

docker rm 删除指定的容器。

  • 删除nginx容器:
# docker rm nginxError response from daemon: You cannot remove a running container a38795771660b7e52ba7719dd936fbda36666ceff95fe66e79b6b845f278e9e9. Stop the container before attempting removal or force remove# docker rm -f nginxnginx# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES# docker ps -aCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

docker rm 的经常使用参数选项:

-f:强制删除正在运行中的容器

docker rm 没法直接删除正在运行中的容器,建议先中止容器,再删除容器。

rmi

docker rm 删除指定的镜像。

  • 删除nginx镜像:
# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              881bd08c0b08        13 days ago         109MB# docker run -itd -p 80:80 --name nginx nginx:latest b34323364cf285d17f25f7f338f298f73edb49ddf2b72d0aa31484676092cfa6# docker rmi nginx:latest Error response from daemon: conflict: unable to remove repository reference "nginx:latest" (must force) - container b34323364cf2 is using its referenced image 881bd08c0b08# docker rmi -f nginx:latest Untagged: nginx:latest
Untagged: nginx@sha256:98efe605f61725fd817ea69521b0eeb32bef007af0e3d0aeb6258c6e6fe7fc1a

docker rmi 的经常使用参数选项:

-f:强制删除正在运行中的容器的镜像

docker rmi 没法直接删除当前存在(无论时正在运行中仍是已经中止)的容器的镜像,建议先中止、删除容器,再删除对应镜像。

更多命令

除了上面的命令之外,还有不少命令也是常常使用的。

  • 更多命令以下:
Docker 命令 做用
docker push 推送指定镜像或者库镜像到docker源服务器
docker history 展现一个镜像造成历史
docker attach 当前shell下attach链接指定运行镜像
docker build 经过Dockerfile定制镜像
docker commit 提交当前容器为新的镜像
docker cp 宿主机和容器之间互相拷贝文件或目录
docker create 建立一个新的容器,同run,但不启动容器
docker diff 查看容器变化
docker events 从docker服务获取容器实时事件
docker export 导出容器的内容流做为一个tar归档文件[对应import]
docker import 从tar包中的内容建立一个新的文件系统镜像[对应export]
docker info 显示系统相关信息
docker load 从一个tar包中加载一个镜像[对应save]
docker login 注册或登陆一个docker源服务器
docker logout 从docker源服务器中登出
docker logs 输出当前容器的日志信息
docker port 查看映射端口对应的容器内部源端口
docker pause 暂停容器
docker restart 重启运行中的容器
docker save 保存一个镜像为一个tar包[对应load]
docker tag 给当前镜像打标签
docker top 查看容器中运行的进程信息
docker unpause 恢复暂停的容器
docker version 查看docker版本号
docker wait 截取容器中止时的退出状态值
相关文章
相关标签/搜索