26个常用的Docker命令及示例 1. docker run:运行一个容器 2. docker start:启动一个已停止的容器 3. docker stop:停止一个正在运行的容器 4. docker restart:重启一个容器 5. docker pause:暂停一个容器的所有进程 6. docker unpause:取消暂停一个容器的所有进程 7. docker rm:删除一个容器 8. docker ps:列出正在运行的容器 9. docker images:列出本地镜像 10. docker pull:从远程仓库中拉取镜像 11. docker push:将本地镜像推送到远程仓库 12. docker exec:在容器内部执行命令 13. docker attach:进入正在运行的容器 14. docker cp:在容器与主机之间复制文件 15. docker inspect:查看容器的详细信息 16. docker logs:查看容器的日志 17. docker build:构建镜像 18. docker tag:为镜像添加标签 19. docker network:管理Docker网络 20. docker volume:管理Docker卷 21. docker-compose up:使用Docker Compose启动应用程序 22. docker-compose stop:使用Docker Compose停止应用程序 23. docker-compose restart:使用Docker Compose重启应用程序 24. docker-compose down:使用Docker Compose停止并删除应用程序 25. docker-compose build:使用Docker Compose构建应用程序 26. docker-compose logs:使用Docker Compose查看应用程序的日志

用于系统管理员和开发人员的Docker命令备忘单…

Docker 是一个容器化系统,它将应用程序及其依赖项封装在一个容器中运行。当使用Docker时,有几个必须要了解的docker命令。本文就是关于这些命令的。

如果你不知道Docker是什么,你可以点击这个 Udemy beginner course

查找版本

你想要知道的第一件事是如何找到已安装Docker的版本。

姚伟斌@姚伟斌:/home/姚伟斌$ docker --version

Docker version 18.09.6, build 481bc77

下载镜像

假设你需要从 dockerhub(Docker仓库)拉取Docker镜像。以下是拉取Apache HTTP服务器镜像的示例。

姚伟斌@姚伟斌:/home/姚伟斌$ docker pull httpd

Using default tag: latest

latest: Pulling from library/httpd

f5d23c7fed46: Pull complete

b083c5fd185b: Pull complete

bf5100a89e78: Pull complete

98f47fcaa52f: Pull complete

622a9dd8cfed: Pull complete

Digest: sha256:8bd76c050761610773b484e411612a31f299dbf7273763103edbda82acd73642

Status: Downloaded newer image for httpd:latest

姚伟斌@姚伟斌:/home/姚伟斌$

镜像

列出系统上拉取的所有Docker镜像,包括标签/镜像ID/大小等镜像详细信息。

姚伟斌@姚伟斌:/home/姚伟斌$ docker images

REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE

httpd                      latest              ee39f68eb241        2 days ago          154MB

hello-world                latest              fce289e99eb9        6 months ago        1.84kB

sequenceiq/hadoop-docker   2.7.0               789fa0a3b911        4 years ago         1.76GB

运行

运行命令中指定的Docker镜像。该命令将创建一个Docker容器,在容器中运行Apache HTTP服务器。

姚伟斌@姚伟斌:/home/姚伟斌$ docker run -it -d httpd

09ca6feb6efc0578951a3e2557ed5855b2edda39a795d9703eb54d975930fe6e

正在运行什么?

ps 列出所有正在运行的Docker容器及其详细信息。

姚伟斌@姚伟斌:/home/姚伟斌$ docker ps

CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS               NAMES

09ca6feb6efc        httpd               "httpd-foreground"   36 seconds ago      Up 33 seconds       80/tcp              suspicious_bell

如你所见,Apache服务器正在这个Docker容器中运行。

ps -a

列出所有正在运行/已退出/已停止的Docker容器及其详细信息。

姚伟斌@姚伟斌:/home/姚伟斌$ docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

09ca6feb6efc httpd “httpd-foreground” 51 seconds ago Up 49 seconds 80/tcp suspicious_bell

2f6fb3381078 sequenceiq/hadoop-docker:2.7.0 “/etc/bootstrap.sh -d” 2 weeks ago Exited (137) 9 days ago quizzical_raman

9f397feb3a46 sequenceiq/hadoop-docker:2.7.0 “/etc/bootstrap.sh -…” 2 weeks ago Exited (255) 2 weeks ago 2122/tcp, 8030-8033/tcp, 8040/tcp, 8042/tcp, 8088/tcp, 19888/tcp, 49707/tcp, 50010/tcp, 50020/tcp, 50070/tcp, 50075/tcp, 50090/tcp determined_ritchie

9b6343d3b5a0 hello-world “/hello” 2 weeks ago Exited (0) 2 weeks ago peaceful_mclean

exec

进入docker容器并执行命令。本例中,我正在访问apache服务器容器。

姚伟斌@姚伟斌:/home/姚伟斌$ docker exec -it 09ca6feb6efc bash

root@09ca6feb6efc:/usr/local/apache2# ls

bin  build  cgi-bin  conf  error  htdocs  icons  include  logs              modules

root@09ca6feb6efc:/usr/local/apache2#

输入exit并按回车键退出容器。

删除容器

删除命令中指定的docker容器。

姚伟斌@姚伟斌:/home/姚伟斌$ docker rm 9b6343d3b5a0

9b6343d3b5a0

运行以下命令检查容器是否被删除。

姚伟斌@姚伟斌:/home/姚伟斌$ docker ps -a

CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS                       PORTS                                  NAMES

09ca6feb6efc        httpd                             "httpd-foreground"      About a minute ago  Up About a minute            80/tcp                                 suspicious_bell

2f6fb3381078        sequenceiq/hadoop-docker:2.7.0     "/etc/bootstrap.sh -d"   2 weeks ago         Exited (137) 9 days ago                                               quizzical_raman

9f397feb3a46        sequenceiq/hadoop-docker:2.7.0     "/etc/bootstrap.sh -…"   2 weeks ago         Exited (255) 2 weeks ago   2122/tcp, 8030-8033/tcp, 8040/tcp, 8042/tcp, 8088/tcp, 19888/tcp, 49707/tcp, 50010/tcp, 50020/tcp, 50070/tcp, 50075/tcp, 50090/tcp   determined_ritchie

删除镜像

删除命令中指定的docker镜像

姚伟斌@姚伟斌:/home/姚伟斌$ docker rmi fce289e99eb9

取消标记:hello-world:latest

取消标记:hello-world@sha256:41a65640635299bab090f783209c1e3a3f11934cf7756b09cb2f1e02147c6ed8

已删除:sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e

已删除:sha256:af0b15c8625bb1938f1d7b17081031f649fd14e6b233688eea3c5483994a66a3

姚伟斌@姚伟斌:/home/姚伟斌$

重新启动Docker

使用命令中提到的容器ID重新启动Docker容器。

姚伟斌@姚伟斌:/home/姚伟斌$ docker restart 09ca6feb6efc

09ca6feb6efc

运行以下命令并检查STATUS参数,以验证容器是否最近启动。

姚伟斌@姚伟斌:/home/姚伟斌$ docker ps

容器ID 图像 命令 创建时间 状态 端口 名称

09ca6feb6efc httpd "httpd-foreground" 6分钟前 已启动9秒 80/tcp suspicious_bell

停止Docker

停止命令中提到的容器ID的容器。

姚伟斌@姚伟斌:/home/姚伟斌$ docker stop 09ca6feb6efc

09ca6feb6efc

运行下面的命令检查容器是否仍在运行或已停止。

姚伟斌@姚伟斌:/home/姚伟斌$ docker ps

容器ID 图像 命令 创建时间 状态 端口 名称

启动Docker

此命令在Docker中使用命令中提到的容器ID启动Docker容器。

姚伟斌@姚伟斌:/home/姚伟斌$ docker start 09ca6feb6efc

09ca6feb6efc

运行以下命令以检查容器是否已启动。

姚伟斌@姚伟斌:/home/姚伟斌$ docker ps

容器ID 图像 命令 创建时间 状态 端口 名称

09ca6feb6efc httpd "httpd-foreground" 8分钟前 已启动3秒 80/tcp suspicious_bell

Kill

立即停止Docker容器。Docker stop命令会优雅地停止容器,这是kill和stop命令之间的区别。

姚伟斌@姚伟斌:/home/姚伟斌$ docker kill 09ca6feb6efc

09ca6feb6efc

运行下面的命令以查看容器是否被杀死。

姚伟斌@姚伟斌:/home/姚伟斌$ docker ps

容器ID 图像 命令 创建时间 状态 端口 名称

Commit

使用命令中提到的容器ID在本地系统上保存一个新的Docker镜像。在下面的示例中,姚伟斌是用户名,httpd_image是镜像名称。

姚伟斌@姚伟斌:/home/姚伟斌$ docker commit 09ca6feb6efc 姚伟斌/httpd_image

sha256:d1933506f4c1686ab1a1ec601b1a03a17b41decbc21d8acd893db090a09bb31c

登录

登录到Docker Hub。您将被要求提供Docker Hub凭据以登录。

姚伟斌@姚伟斌:/home/姚伟斌$ docker login

使用您的Docker ID登录以从Docker Hub推送和拉取图像。如果您没有Docker ID,请转到https://hub.docker.com创建一个。

用户名:姚伟斌

密码:

配置凭据助手以删除此警告。请参阅

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

登录成功

推送

使用命令中提到的图像名称将Docker映像上传到Dockerhub。

姚伟斌@姚伟斌:/home/姚伟斌$ docker history 姚伟斌/httpd_image

IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT

3904662761df        2 weeks ago         /bin/sh -c #(nop)  CMD ["-D", "FOREGROUND"]   0B

           2 weeks ago         /bin/sh -c #(nop)  EXPOSE 80                    0B

           2 weeks ago         /bin/sh -c #(nop)  ENTRYPOINT ["httpd"]         0B

           2 weeks ago         /bin/sh -c ln -sf /dev/stdout /usr/local/ap…   22B

           2 weeks ago         /bin/sh -c set -ex;   savedAptMark="$(apt-m…   8.1MB

           2 weeks ago         /bin/sh -c #(nop)  ENV LANG=C.UTF-8             0B

           2 weeks ago         /bin/sh -c #(nop)  ENV PATH=/usr/local/apac…   0B

           2 weeks ago         /bin/sh -c #(nop)  ENV APACHE_CONFDIR=/usr/…   0B

           2 weeks ago         /bin/sh -c #(nop)  ENV APACHE_RUN_USER=www…   0B

           2 weeks ago         /bin/sh -c #(nop)  ENV APACHE_RUN_GROUP=ww…   0B

           2 weeks ago         /bin/sh -c #(nop)  CMD ["bash"]                 0B

           2 weeks ago         /bin/sh -c #(nop) ADD file:2d4e4ddb6b52fb1…   55.3MB

姚伟斌@姚伟斌:/home/姚伟斌$ docker 历史 httpd

镜像               创建时间             创建者                                              大小                注释

ee39f68eb241        2 天前          /bin/sh -c #(nop)  CMD [“httpd-foreground”]     0B

           2 天前          /bin/sh -c #(nop)  EXPOSE 80                    0B

           2 天前          /bin/sh -c #(nop) COPY file:c432ff61c4993ecd…   138B

           4 天前          /bin/sh -c set -eux;   savedAptMark=”$(apt-m…   49.1MB

           4 天前          /bin/sh -c #(nop)  ENV HTTPD_PATCHES=           0B

           4 天前          /bin/sh -c #(nop)  ENV HTTPD_SHA256=b4ca9d05…   0B

           4 天前          /bin/sh -c #(nop)  ENV HTTPD_VERSION=2.4.39     0B

           4 天前          /bin/sh -c set -eux;  apt-get update;  apt-g…   35.4MB

           4 天前          /bin/sh -c #(nop) WORKDIR /usr/local/apache2    0B

           4 天前          /bin/sh -c mkdir -p “$HTTPD_PREFIX”  && chow…   0B

           4 天前          /bin/sh -c #(nop)  ENV PATH=/usr/local/apach…   0B

           4 天前          /bin/sh -c #(nop)  ENV HTTPD_PREFIX=/usr/loc…   0B

           5 天前          /bin/sh -c #(nop)  CMD [“bash”]                 0B

           5 天前          /bin/sh -c #(nop) ADD file:71ac26257198ecf6a…   69.2MB

检查日志

显示命令中提到的包含id的docker容器的日志。

搜索镜像
在dockerhub上搜索命令中提到的名称的docker镜像。
姚伟斌@姚伟斌:/home/姚伟斌$ docker search hadoop

名称                             描述                                     星标数               官方            自动化

sequenceiq/hadoop-docker         试用Hadoop的简便方法                       611                                     [OK]

uhopper/hadoop                  基本Hadoop镜像,具有动态配置…   98                                      [OK]

harisekhon/hadoop                Apache Hadoop(HDFS + Yarn,标签为2.2 – 2.8)     54                                      [OK]

bde2020/hadoop-namenode          Hadoop集群的NameNode             22                                      [OK]

kiwenlau/hadoop                  在Docker容器中运行Hadoop集群         19

izone/hadoop                     Hadoop 2.8.5生态系统完全分布式,Ju…   14                                      [OK]

uhopper/hadoop-namenode          Hadoop NameNode                                 9                                       [OK]

bde2020/hadoop-datanode          Hadoop集群的DataNode             9                                       [OK]

singularities/hadoop             Apache Hadoop                                   8                                       [OK]

uhopper/hadoop-datanode          Hadoop DataNode                                     7                                       [OK]

harisekhon/hadoop-dev            Apache Hadoop(HDFS + Yarn)+ Dev Tools + Gi…   6                                       [OK]

更新配置

更新容器配置。这显示了所有更新选项。

姚伟斌@姚伟斌:/home/姚伟斌$ docker update --help

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

更新一个或多个容器的配置

选项:

--blkio-weight uint16        块IO(相对权重),介于10和1000之间,或者0表示禁用

(默认 0)

--cpu-period int             限制CPU CFS(完全公平调度器)周期

--cpu-quota int              限制CPU CFS(完全公平调度器)配额

--cpu-rt-period int          限制CPU实时周期(以微秒为单位)

--cpu-rt-runtime int         限制CPU实时运行时间(以微秒为单位)

-c, --cpu-shares int             CPU份额(相对权重)

--cpus decimal               CPU数量

--cpuset-cpus string         允许执行的CPU(0-3, 0,1)

--cpuset-mems string         在其中允许执行的MEM(0-3, 0,1)

--kernel-memory bytes        内核内存限制

-m, --memory bytes               内存限制

--memory-reservation bytes   内存软限制

--memory-swap bytes          交换限制等于内存加交换:'-1'表示启用无限交换

--restart string             容器退出时应用的重启策略

运行以下命令以更新docker容器的CPU配置,命令中提到的容器ID。

姚伟斌@姚伟斌:/home/姚伟斌$ docker update -c 1 2f6fb3381078

2f6fb3381078

创建卷

创建一个docker容器将用于存储数据的卷。

姚伟斌@姚伟斌:/home/姚伟斌$ docker volume create

7e7bc886f69bb24dbdbf19402e31102a25db91bb29c56cca3ea8b0c611fd9ad0

运行以下命令查看卷是否已创建。

姚伟斌@姚伟斌:/home/姚伟斌$ docker volume ls

DRIVER              VOLUME NAME

local               7e7bc886f69bb24dbdbf19402e31102a25db91bb29c56cca3ea8b0c611fd9ad0

安装插件

使用设置为1的调试环境安装docker插件vieux/sshfs。

姚伟斌@姚伟斌:/home/姚伟斌$ docker plugin install vieux/sshfs DEBUG=1

插件"vieux/sshfs"正在请求以下权限:

- 网络: [主机]

- 挂载: [/var/lib/docker/plugins/]

- 挂载: []

- 设备: [/dev/fuse]

- 能力: [CAP_SYS_ADMIN]

您是否授予以上权限?[y/N] y

正在从vieux/sshfs中获取最新版本

52d435ada6a4: 下载完成

摘要: sha256:1d3c3e42c12138da5ef7873b97f7f32cf99fb6edde75fa4f0bcf9ed277855811

状态: 已下载新版本的vieux/sshfs

已安装插件vieux/sshfs

运行下面的命令以列出docker插件。

姚伟斌@姚伟斌:/home/姚伟斌$ docker plugin ls

ID                    名称                           描述                     启用

2a32d1fb95af        vieux/sshfs:latest       Docker的sshFS插件       true

注销

从dockerhub注销。

姚伟斌@姚伟斌:/home/姚伟斌$ docker logout

正在移除https://index.docker.io/v1/的登录凭据

结论

希望您现在对docker命令有了一个基本的理解。在开发或实验环境中尝试这些命令来进行练习和学习。

如果您对学习Docker和Kubernetes感兴趣,那么请查看此链接

类似文章