从开发到部署会用到的 Docker 命令

本文的目的是理解容器开发在目标环境中部署的端到端流程,并列出这些操作所需的 Docker 命令。



1. 介绍


整个流程包括使用代码、依赖软件和配置来开发容器映像,在开发环境中运行和测试容器,将容器映像发布到 Docker Hub,以及最后的部署和在目标环境中运行容器。

本文假设您已经在开发和目标环境中安装了 Docker 引擎。有关安装说明请参阅 6.3:https://docs.docker.com/engine/installation/。



2. 开发容器映像

在构建容器映像之前,你需要创建一个 dockerfile,它包含了所需要的信息。请参考https://nodejs.org/en/docs/guides/nodejs-docker-webapp/来编制一个 dockerfile。

2.1 构建 Docker 容器

从开发到部署会用到的 Docker 命令

这个命令会使用当前目录下的 Dockerfile。如果 dockerfile 使用了其它文件名或者放在其它位置,可以使用 -f 参数来指定 dockerfile 的名称。“docker build” 命令会构建容器映像,这个容器映像的名称由 “-t” 参数指定。

从开发到部署会用到的 Docker 命令

从开发到部署会用到的 Docker 命令

2.2 Docker 映像命名规范

如果你只是在本地使用,那么你可以随意为 Docker 容器命名。它可以像上面那边简单的命名为“myApp”。但是如果你想将映像发布到 Docker Hub,就需要遵循特定的命名规范。这个规范有助于 Docker 工具将容器映像发布到正确的命名空间和仓库。

格式如下:

从开发到部署会用到的 Docker 命令

现在我们按上面的规范来构建 Docker 映像:

从开发到部署会用到的 Docker 命令

我们可以使用“docker tag”命令从已经存在的映像创建新的映像。“docker tag”命令会在下面说明。

2.3 列出 Docker 中所有映像

从开发到部署会用到的 Docker 命令

从开发到部署会用到的 Docker 命令



3. 运行容器

3.1 启动 Docker 容器

使用“docker run”命令来启动 Docker 容器。

从开发到部署会用到的 Docker 命令

从开发到部署会用到的 Docker 命令

“-d” 参数会让容器以独立的模式来运行容器,这样即使终端关闭了容器仍然会保持运行。

“-p” 用于映射容器。比如,“-p 8080:8080” 的第一个端口号用在 Docker 主机上,第二个端口号是在 Docker 容器中使用的。根据这个参数的设置,所有对 Docker 主机端口的数据传输都会被转发到对应的 Docker 容器端口。

3.2 查看运行中的容器

从开发到部署会用到的 Docker 命令

从开发到部署会用到的 Docker 命令

从上面的输出我们可以看到 Docker 容器以 “trusting_snyder” 这个名字在运行。

如果要列出所有容器,而不管其状态如何,使用 “-a” 参数。

从开发到部署会用到的 Docker 命令

3.3 显示运行中容器的控制台日志

从开发到部署会用到的 Docker 命令

从开发到部署会用到的 Docker 命令

ContainerName(容器名称) 可以通过 “docker ps” 命令找到。

3.4 登入容器

从开发到部署会用到的 Docker 命令

上面的命令会用容器中的 “bash” shell 给出提示。

从开发到部署会用到的 Docker 命令

3.5  停止容器运行

从开发到部署会用到的 Docker 命令

从开发到部署会用到的 Docker 命令

3.6  从 Docker 中删除容器映像


使用 “docker images” 或 “docker images -a” 命令找到 imageId(映像 ID)。



上面的命令会强制删除指定的映像。

3.7 清理 Docker / 删除本地 Docker 中所有容器映像




4. 发布容器映像

Docker 容器映像可以发布到本地库或公共的 Docker Hub。两种情况所使用的命令的操作过程一样。为了将你的 Docker 映像发布到 Docker Hub,你得先在 http://hub.docker.com 创建自己的命名空间和仓库。

我自己的命名空间是 “saravasu”,当前练习使用的仓库是 “techietweak”。


4.1 登录 Docker Hub


如果你想登录本地库,请先提供 URL。如果没有指定 URL,那么这个命令会登录 Docker Hub。


4.2 标记容器映像

在把容器映像推送到 Docker Hub 之前,必须按指定的格式对其进行标记:<Namespace>/<Repository>:<Version>。如果你没有指定版本(version),它会使用默认的 “default”。下面的命令演示了标记映像:


4.3 将 Docker 映像推送到 Docker Hub


从开发到部署会用到的 Docker 命令

4.4 在 Docker Hub 中检查容器映像

现在使用你的账号登录 Docker Hub 并检查映像的仓库中进行检查。

从开发到部署会用到的 Docker 命令



5 部署容器

5.1 拉取 Docker 容器映像

在主机的目标环境中登录 Docker Hub 并从 Docker Hub 拉取容器映像。如果你想从私有的船坞(指 Docke 映像库)中拉取,需要使用命令 “$docker login <hostname>” 来指定私有仓船坞的主机名(hostname)。

从开发到部署会用到的 Docker 命令

由于上面的命令没有指定主机名称,它会登录 https://hub.docker.com

从开发到部署会用到的 Docker 命令

从开发到部署会用到的 Docker 命令

5.2 检查映像

docker pull 命令会从 Docker Hub 下载容器映像。我们可以使用 “docker images” 命令来对其进行检查。

从开发到部署会用到的 Docker 命令从开发到部署会用到的 Docker 命令

5.3 运行容器

现在我们用与在开发环境下运行测试相同的方法来运行 Docker 容器。之前做过,轻车熟路。

从开发到部署会用到的 Docker 命令

从开发到部署会用到的 Docker 命令

docker run 命令会启动容器。可以使用 “docker ps” 命令来检查。Docker 创建并运行了一个新的容器,其名称为 “naughty_lewin”。

我们在上面看到 Docker 引擎为运行的容器提供了一个随机的名称,这在自动化过程中可能会产生问题,所以最好是按我们的意愿指定一个名称。这可以由 “-name” 参数实现。

从开发到部署会用到的 Docker 命令

从开发到部署会用到的 Docker 命令



6. 总结

本文涵盖了开发一个容器映像的流程和必要的命令,讲解了在本地环境运行,以及将映像发布到 Docker Hub,并在目标环境运行容器。想进一步研究,或者阅读详细的文档,请移步 Docker 网站。


本文转自 Mr_sheng 51CTO博客,原文链接:http://blog.51cto.com/sf1314/1971946