开发人员一直在努力提高 Docker 的使用率和性能,命令也在不停变化。Docker 命令经常被弃用,或被替换为更新且更有效的命令,本文总结了近年来资深专家最常用的命令列表并给出部分使用方法。

目前,Docker 共有 13 个管理命令和 41 个通用命令,以下是常用 Docker 命令列表:

  • docker help—检查最新 Docker 可用命令;
  • docker attach—将本地输入、输出、错误流附加到正在运行的容器;
  • docker commit—从当前更改的容器状态创建新镜像;
  • docker exec—在活动或正在运行的容器中运行命令;
  • docker history—显示镜像历史记录;
  • docker info—显示系统范围信息;
  • docker inspect—查找有关 docker 容器和镜像的系统级信息;
  • docker login—登录到本地注册表或 Docker Hub;
  • docker pull—从本地注册表或 Docker Hub 中提取镜像或存储库;
  • docker ps—列出容器的各种属性;
  • docker restart—停止并启动容器;
  • docker rm—移除容器;
  • docker rmi—删除镜像;
  • docker run—在隔离容器中运行命令;
  • docker search—在 Docker Hub 中搜索镜像;
  • docker start—启动已停止的容器;
  • docker stop—停止运行容器;
  • docker version—提供 docker 版本信息。

查找 Docker 版本和系统信息

无论是在本地还是云端,我们都需要检查 Docker 版本和系统信息,可以使用以下命令找到 Docker 版本:

$ docker versionClient:Version: 18.03.0-ceAPI version: 1.37Go version: go1.9.4Git commit: 0520e24Built: Wed Mar 21 23:06:22 2018OS/Arch: darwin/amd64Experimental: falseOrchestrator: swarmServer:Engine:Version: 18.03.0-ceAPI version: 1.37 (minimum version 1.12)Go version: go1.9.4Git commit: 0520e24Built: Wed Mar 21 23:14:32 2018OS/Arch: linux/amd64Experimental: true

另一个重要命令是 docker info:

$ docker infoContainers: 0Running: 0Paused: 0Stopped: 0Images: 0Server Version: 18.03.0-ceStorage Driver: overlay2Backing Filesystem: extfsSupports d_type: trueNative Overlay Diff: trueLogging Driver: json-fileCgroup Driver: cgroupfsPlugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog…

该命令将显示部分设备信息,比如服务器版本、存储驱动程序、内核版本、操作系统、总内存等。当尝试为当前 Docker 安装启动新资源或尝试找出系统级资源分配问题时,这些信息非常有用,这也是检查运行、停止容器数量及下载镜像数量的快速方法。

搜索下载 Docker 镜像

可以使用 docker search 命令在 Docker Hub 搜索已有镜像:

$ docker search ubuntuNAME DESCRIPTION STARS OFFICIAL AUTOMATEDubuntu Ubuntu is a Debian-based Linux operating sys… 7861 [OK]dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 190 [OK]rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 156 [OK]ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 93 [OK]ubuntu-upstart Upstart is an event-based replacement for th… 87 [OK]neurodebian NeuroDebian provides neuroscience research s… 50 [OK]…

以上对 ubuntu 的搜索显示可用镜像、描述和官方状态等信息。如果要下载 ubuntu 镜像,可以使用 docker pull 命令:

$ docker pull ubuntuUsing default tag: latestlatest: Pulling from library/ubuntu6b98dfc16071: Pull complete4001a1209541: Pull complete6319fc68c576: Pull completeb24603670dc3: Pull complete97f170c87c6f: Pull completeDigest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6dStatus: Downloaded newer image for ubuntu:latest$

Docker 镜像

使用 docker info 命令查找拥有镜像数量:

$ docker infoContainers: 0Running: 0Paused: 0Stopped: 0Images: 1…

docker images 命令可详细列出拥有镜像:

$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEubuntu latest 113a43faa138 2 weeks ago 81.2MB

假设下载 NGINX 镜像,可以运行 docker pull 命令:

$ docker pull nginx

如果检查 Docker 镜像,会看到如下内容:

$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEubuntu latest 113a43faa138 2 weeks ago 81.2MBnginx latest cd5239a0906a 2 weeks ago 109MB

如果寻找 Ubuntu 16.04 版本,可使用 16.04 标签下载特定版本:

$ docker pull ubuntu:16.04

随后,将出现两个 Ubuntu 映像版本:

$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEubuntu 16.04 5e8b97a2a082 2 weeks ago 114MBubuntu latest 113a43faa138 2 weeks ago 81.2MBnginx latest cd5239a0906a 2 weeks ago 109MB

注意:无需注册 Docker Hub 即可提取镜像。如果想将镜像推送到 Docker Hub,需要注册然后使用 docker login 命令登录:

$ docker login --username=yourhubusername --email=youremail@company.com

运行镜像的 Docker 容器

假设想在 docker 上运行 NGINX 服务器,可运行以下命令:

$ docker run -p 8080:80 nginx

如果已用 run 命令从 Docker Hub 提取 nginx 映像创建 NGINX 容器。 -p 8080:80 会告诉 Docker 将 localhost 端口 8080 映射到 Docker 容器端口 80,应该能够从 http:// localhost:8080 访问 NGINX 服务器。

NGINX 容器已附加到命令行。如果退出命令行,容器将会停止,可使用 detach(’- d)启动 NGINX 容器,这样即使退出命令行也可继续运行。

$ docker run -p 8080:80 -d nginx

以上命令将以分离模式启动容器并返回命令行。

使用 docker ps 命令列出 Docker 容器

docker ps 命令允许查找正在运行的所有容器:

$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES6162daed25da nginx "nginx -g 'daemon of…" 7 minutes ago Up 7 minutes 0.0.0.0:8080->80/tcp hardcore_torvalds

如上显示容器的各种属性,可以看到是从 nginx 镜像创建并显示端口转发信息。CONTAINER ID 和 NAMES 属性需要特别提及,可以使用上述两大属性唯一标识容器。二者都可自动生成,但也可在容器创建过程中为容器命名。

创建一个名为 my_nginx 的 NGINX 容器:

$ docker run --name my_nginx -p 8888:80 -d nginx

再次列出所有 Docker 容器:

$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESe7b19b6ad778 nginx "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:8888->80/tcp my_nginx6162daed25da nginx "nginx -g 'daemon of…" 15 minutes ago Up 16 minutes 0.0.0.0:8080->80/tcp hardcore_torvalds

请注意,新容器的名称为“my_nginx”。 处理大量容器时,可以使用命名约定,这可以更好得组织容器。

docker ps 命令仅显示正在运行的容器。如果对上述情况使用 docker info 命令:

$ docker infoContainers: 2Running: 2Paused: 0Stopped: 0Images: 3

可以看到有两个容器正在运行,如果一个暂停或已停止,则不会仅使用 docker ps 命令查看这些容器,必须使用 all( - a)选项:

$ docker ps -a

启动,停止,重启和杀死容器

假设要停止’my_nginx’容器,可使用 CONTAINER ID 或 NAME。

$ docker stop my_nginxmy_nginx

列出 Docker 容器:

$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES6162daed25da nginx "nginx -g 'daemon of…" 27 minutes ago Up 27 minutes 0.0.0.0:8080->80/tcp hardcore_torvalds$ docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESe7b19b6ad778 nginx "nginx -g 'daemon of…" 12 minutes ago Exited (0) About a minute ago my_nginx6162daed25da nginx "nginx -g 'daemon of…" 27 minutes ago Up 27 minutes 0.0.0.0:8080->80/tcp hardcore_torvalds

如果在没有 -a 选项的情况下运行 docker ps,只显示正在运行的容器。在第二种情况下,可以看到’my_nginx’容器处于退出状态。

让我们 docker start 容器:

$ docker start my_nginxmy_nginx

检查 Docker 容器列表:

$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESe7b19b6ad778 nginx "nginx -g 'daemon of…" 16 minutes ago Up 29 seconds 0.0.0.0:8888->80/tcp my_nginx6162daed25da nginx "nginx -g 'daemon of…" 30 minutes ago Up 30 minutes 0.0.0.0:8080->80/tcp hardcore_torvalds

可以看到 STATUS 显示容器’my_nginx’再次被启动。

如果由于某些问题而需重启容器,则可使用 restart 命令,这比单独停止和启动容器速度更快:

$ docker restart my_nginx

可以像进程一样终止 docker 容器,比如终止 my_nginx 容器:

$ docker kill my_nginx

再次列出 Docker 容器:

$ docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESe7b19b6ad778 nginx "nginx -g 'daemon of…" 22 minutes ago Exited (137) 7 seconds ago my_nginx6162daed25da nginx "nginx -g 'daemon of…" 36 minutes ago Up 36 minutes 0.0.0.0:8080->80/tcp hardcore_torvalds

容器 my_nginx 未运行。此外,可在信息中看到一个正在运行的容器和一个已停止容器:

$ docker infoContainers: 2Running: 1Paused: 0Stopped: 1Images: 3…

Docker Exec Bash 和 Docker SSH

如果需要与 shell 进行交互以创建服务或解决问题,可以使用 docker exec 命令创建交互式 shell。比如,用 bash shell 从 ubuntu 映像启动一个容器:

$ docker run --name my_ubuntu -it ubuntu:latest bashroot@a19c770b8621:/#

root @haracle#表示位于 Docker 容器的 bash shell 中,可以运行 shell 命令:

root@a19c770b8621:/# lsbin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr varroot@a19c770b8621:/# pwd/

列出 Docker 容器:

$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESa19c770b8621 ubuntu:latest "bash" About a minute ago Up About a minute my_ubuntu6162daed25da nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 0.0.0.0:8080->80/tcp hardcore_torvalds

如上,my_ubuntu 正在运行。假设想将 Docker ssh 放入’my_ubuntu’容器中,可以使用 docker exec bash:

$ docker exec -it my_ubuntu bashroot@a19c770b8621:/#

使用 docker exec 向容器发出命令。例如,可以直接用命令提示符在 my_ubuntu 容器上运行 ls 命令:

$ docker exec -it my_ubuntu lsbin dev home lib64 mnt proc run srv tmp varboot etc lib media opt root sbin sys usr

以分离模式启动容器并使用 docker attach

以上示例用附加模式启动 ubuntu 容器,我们也可在分离模式下启动:

$ docker run -it -d --name my_ubuntu_2 ubuntu:latest bash75b28b7208359137b3e1dc2843387918e28b4c6c4860ef0cdeac79c205f5cbc4

验证容器是否正在运行:

$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES75b28b720835 ubuntu:latest "bash" 3 minutes ago Up 3 minutes my_ubuntu_2a19c770b8621 ubuntu:latest "bash" 15 minutes ago Up 15 minutes my_ubuntu6162daed25da nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:8080->80/tcp hardcore_torvalds

使用 docker attach 命令获取 docker exec bash-like 效果:

$ docker attach my_ubuntu_2root@75b28b720835:/#

检查 Docker 镜像历史

Docker 社区镜像是分层创建的,可使用 Docker history 命令查看镜像创建方式。先看看有哪些镜像:

$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEubuntu 16.04 5e8b97a2a082 2 weeks ago 114MBubuntu latest 113a43faa138 2 weeks ago 81.2MBnginx latest cd5239a0906a 2 weeks ago 109MB

查看 nginx 镜像历史:

$ docker history nginxIMAGE CREATED CREATED BY SIZE COMMENTcd5239a0906a 2 weeks ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon… 0B  2 weeks ago /bin/sh -c #(nop) STOPSIGNAL [SIGTERM] 0B  2 weeks ago /bin/sh -c #(nop) EXPOSE 80/tcp 0B  2 weeks ago /bin/sh -c ln -sf /dev/stdout /var/log/nginx… 22B  2 weeks ago /bin/sh -c set -x && apt-get update && apt… 53.7MB  2 weeks ago /bin/sh -c #(nop) ENV NJS_VERSION=1.15.0.0.… 0B  2 weeks ago /bin/sh -c #(nop) ENV NGINX_VERSION=1.15.0-… 0B  7 weeks ago /bin/sh -c #(nop) LABEL maintainer=NGINX Do… 0B  8 weeks ago /bin/sh -c #(nop) CMD ["bash"] 0B  8 weeks ago /bin/sh -c #(nop) ADD file:ec5be7eec56a74975… 55.3MB

使用镜像历史命令查找最近更改,如果在新版本镜像中发现问题,则此命令可帮助找到原因,也可用以下命令:

$ docker image history nginx

Docker 检查容器

可以使用 docker inspect 命令查找有关系统的信息,运行 docker ps 命令列出 Docker 容器:

$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES6162daed25da nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:8080->80/tcp hardcore_torvalds

使用 CONTAINER ID 检查容器(也可使用容器名称):

$ docker inspect 6162daed25da[{"Id": "6162daed25da50b98afca5f7ed8caca2289bf309b2547d87ae8674b899d604a4

docker desktop ubuntu镜像_资深专家都知道的顶级 Docker 命令!相关推荐

  1. docker desktop ubuntu镜像_「Docker」 - 镜像仓库

    一.镜像仓库 将Docker镜像和Git进行对比,镜像仓库类似GitHub.GitLab等托管平台,Docker的镜像仓库托管的不是代码项目,而是镜像. Docker镜像仓库最大的作用是实现了Dock ...

  2. docker desktop ubuntu镜像_原创 | Docker入门,看了不理解,假一赔命

    写在前面 这篇博客适合谁? 对于Docker并不了解,只是有一点模糊的感觉,觉得Docker可以当成虚拟机用之类的 只是下载了Docker软件,对于怎么配置,怎么玩,第一步干什么,完全一无所知 其二, ...

  3. 资深专家都知道的顶级 Docker 命令!

    开发人员一直在努力提高 Docker 的使用率和性能,命令也在不停变化.Docker 命令经常被弃用,或被替换为更新且更有效的命令,本文总结了近年来资深专家最常用的命令列表并给出部分使用方法. 目前, ...

  4. 使用docker安装ubuntu镜像

    使用docker安装ubuntu镜像 查找Ubuntu镜像 docker search ubuntu 安装Ubuntu镜像 docker pull ubuntu 查看docker镜像 docker i ...

  5. dockerfile拉取私库镜像_还在用Alpine作为你Docker的Python开发基础镜像?其实Ubuntu更好一点...

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_173 一般情况下,当你想为你的Python开发环境选择一个基础镜像时,大多数人都会选择Alpine,为什么?因为它太小了,仅仅只有 ...

  6. docker安装ubuntu镜像

    在docker中安装Ubuntu. 1. 查找ubuntu镜像 docker search ubuntu 2. 安装 docker pull ubuntu 3. 查看镜像 docker images ...

  7. docker 删除所有镜像_关于 Docker 镜像的操作,看完这篇就够啦 !(下)| 文末福利...

    紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...

  8. docker php composer 使用_「PHP编程」如何使用Docker制作自己的LNMP/LAMP镜像

    LNMP和LAMP是PHP常用的两种运行环境,L代表Linux,N代表Nginx,A代表Apache,M代表Mysql,P代表PHP.在文章<「PHP编程」安装开发环境太烦?告诉你几个简单方法, ...

  9. docker使用ubuntu镜像图形化界面

    不想用vnc安装图形化界面,直接找了一个有图形化界面的ubuntu镜像 镜像地址: https://hub.docker.com/r/kasmweb/desktop/tags pull完镜像后生成容器 ...

最新文章

  1. 本科-人工智能复习题
  2. MPB:农科院牧医所赵圣国组-基于GraftM对功能基因进行物种注释
  3. CMU研究人员提出一种新的深部脑刺激方法,可延长帕金森病治疗效果
  4. centos5.5上安装oracle 11g R2[转发-参考用]
  5. Linux的shell脚本函数教程
  6. Anaconda——安装与添加 Anaconda Python 免费仓库
  7. HA高可用完全分布式集群 HDFS搭建
  8. 基友扫雷通关跟我炫耀!于是用Python自动扫雷程序十秒通关
  9. 网友调侃特斯拉股价要冲向火星 马斯克:疯狂的时代
  10. mysql navicat报表_使用Navicat定时备份mysql数据库和创建报表并邮件自动发送
  11. linux点亮桌面,教你如何点亮自己的Ubuntu 屏幕
  12. StorageManager
  13. 如何通过dba_hist_active_sess_history分析数据库历史性能问题
  14. Python 爬虫 目标:千图网VIP高清无水印下载即用
  15. vue3前端获取文件md5码
  16. 信息系统项目管理9大知识领域及其概要说明
  17. 前端基础 HTML
  18. 计算机科学报数学竞赛,五大学科竞赛参加哪一个科目?五大学科竞赛赛程设置分析!...
  19. PLSQL developer中断执行的前提
  20. 由mouseover和mouseenter引发的思考

热门文章

  1. 计算机网络_NAT与NAPT
  2. 编写优质代码的 6 大关键方法
  3. 图像自标记的可视化指南
  4. U-LanD:基于不确定性的视频地标检测
  5. 第十三篇:上下文无关语法 Context-Free Grammar
  6. Django配置celery执行异步任务和定时任务
  7. Llinux课程计划安排
  8. BIP_BI Pubisher的SQL/XSL/FO扩展函数应用(概念)
  9. 解惑:学.Net还是学Java?
  10. 网络营销十技之六:联署计划营销