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感兴趣,那么请查看此链接。