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

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

1. 介绍

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

本文假设您已经在开发和目标环境中安装了 Docker 引擎。有关安装说明请参阅 6.3。

2. 开发容器映像

在构建容器映像之前,你需要创建一个 dockerfile,它包含了所需要的信息。请参考这里来编制一个 dockerfile。

2.1 构建 Docker 容器

$docker build -t containername .

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

$docker build -t myapp .

2.2 Docker 映像命名规范

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

格式如下:

NameSpace/Repository:Version

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

$docker build -t saravasu/techietweak:001 .

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

2.3 列出 Docker 中所有映像

$docker images

3. 运行容器

3.1 启动 Docker 容器

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

$docker run -d -p 8080:8080 saravasu/techietweak:001

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

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

3.2 查看运行中的容器

$docker ps

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

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

$docker ps -a

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

$docker logs <containerName>

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

3.4 登入容器

$docker exec -it containerId /bin/bash

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

3.5 停止容器运行

$docker stop <containername>

3.6 从 Docker 中删除容器映像

$docker rm imageId

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

$docker rmi -f <List Of Image Ids>

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

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

$docker rmi -f $(docker images | tr -s ' ' ' ' | cut -d' ' -f3)

4. 发布容器映像

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

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

4.1 登录 Docker Hub

$docker login

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

$docker login http://localhost:8080

4.2 标记容器映像

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

$docker tag myapp:latest saravasu/techietweak:001

4.3 将 Docker 映像推送到 Docker Hub

$docker push saravasu/techietweak:001

4.4 在 Docker Hub 中检查容器映像

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

5 部署容器

5.1 拉取 Docker 容器映像

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

$docker login

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

$docker pull saravasu/techietweak:001

5.2 检查映像

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

$docker images

5.3 运行容器

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

$docker run -d -p 8080:8080 saravasu/techietweak:001

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

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

$docker run -d -p 8080:8080 --name "myNodeJsWebContainer" saravasu/techietweak:001

6. 总结

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

原文发布时间为:2017-10-12 

本文作者:佚名

时间: 2024-08-03 16:11:13

从开发到部署会用到的 Docker 命令的相关文章

开发和部署Pocket PC安装程序

应用Microsoft .NET Compact Framework 1.0 Microsoft Visual Studio .NET 2003 概要 了解如何创建独立的 .msi 文件,该文件从桌面运行以便将应用程序安装到不同的 Pocket PC 设备上.开发过程是自动化的,所以能轻松创建和打包所需组件到一个 .msi 文件.示例代码用 C# 和 VB.NET 语言编写. 内容提要 概述 部署 卸载 开发 开发过程自动化 概述 下面所列为开发和部署 Pocket PC 应用程序的要点: Po

针对64位Excel的插件的开发和部署

自Office 2010版本开始有了32位和64位之分,对Excel来说,32位的Excel和64位的Excel在性能上的主要区别是64位的Excel能够处理2G及2G以上的大数据集. 随着64位操作系统的安装,Office 2010及以上版本的普及以及计算机的内存容量越来越高,使用64位Excel的用户越来越多,所以让插件支持64位Excel能够赢得一部分用户.前面十篇文章中所讲解的技术适用于不同版本和不同位数的Excel,但是由于32位的COM组件不支持64位的Excel,所以在针对不同位数

使用WAS OSGi Feature Pack开发和部署OSGi Blueprint Service

使用WebSphere Application Server OSGi Feature Pack开发和部署OSGi Blueprint Service 引言 众所周知,OSGi 最初是 Open Service Gateway Initiative 的缩写,应用于家庭网络和移动嵌入式设备.而后,得益于遵循了 OSGi 规范来重构其插件机制的 eclipse 的迅猛发展和庞大的用户群,OSGi 也迅速的发展成为 Java 动态模块化系统的事实上的工业标准.另一方面,在企业应用领域,伴随着 OSGi

在Apache Geronimo上开发和部署Apache Pluto门户应用程序

简介: 即使 Apache Geronimo 的功能集中缺少预先集成的门户服务器支持, 您仍可以使用 Geronimo 作为门户应用程序的测试和部署环境.本文将引导您逐步完成在 Geronimo 部署 Apache Pluto 驱动器和 容器的过程,为您的门户应用程序提供百分之百的开放源码环境.然后了解如何 在 Pluto 和 Geronimo 中开发.部署和测试样例门户应用程序. Apache Pluto 和 Apache Geronimo:快速入门 Apache Pluto 是 Java P

以OSGi包的形式开发和部署Web服务

部署和支持多版本 Web 服务的 SOA 策略 简介 OSGi 是一个面向 Java 的动态模块系统.OSGi Alliance发布了模块系统的规范.一些受欢迎的 OSGi 容器包括 Eclipse Equinox和 Apache Felix 等等.作为一种用于开发和部署模块化的.可重用的 Java 程序的框架,OSGi 呈现出强劲的发展势头. OSGi 容器允许以 Jar 格式部署 Java 模块(OSGi 将其称为 "包").OSGi 的一个有趣的功能就是能够把一个服务包的多个版本

开发和部署JAX-WS Web服务

在WebSphere Application Server Community Edition V2.0中开发和部署JAX-WS Web服务 引言 IBM WebSphere Application Server Community Edition V2.0(以下简称为 Community Edition)是构建于 Apache Geronimo 2.0 之上的应用服务器,而 Apache Geronimo 2.0 是由 Apache 软件基金会创建的开放源代码应用服务器.Community E

学习如何在基于IBM POWER的服务器上开发和部署Linux应用程序

在 IBM System p 和 System i POWER 平台上开发和部署 Linux 应用程序与在其他 Linux 系统上的开发和部署相似.在本文中,讨论对于 Linux on POWER 系统应该了解的相似性和差异. 简介 System p 和 System i 服务器都基于相同的 POWER 处理器架构,在 System p 或 System i 上的 Linux 发行版中编译的二进制代码可以在这两种平台上运行.但是,在 System p 和 System i 服务器之间,I/O 支

java开发 tomcat 部署

问题描述 java开发 tomcat 部署 开始日志系统........ 没有指定环境变量APP_HOME. 没有指定环境变量ECOMM_HOME. 不能初始化日志系统.错误信息:null 在部署项目时出现这个错误 求解 解决方案 tomcat 服务器没装好,重新安装服务器

用ATL开发和部署ActiveX网页控件

用ATL开发和部署ActiveX网页控件 摘 要 ActiveX插件技术广泛的运用于B/S系统中,本文通过一个项目实例,详细介绍用ATL开发和部署ActiveX网页控件的过程.学习使用ActiveX让浏览器访问客户端的硬件资源. 关键字 ATL,ActiveX控件,COM组件     一.前言 在B/S结构的系统中,出于安全性考虑一般不准许浏览器访问客户端的硬件资源,如控制打印机,照相机等.对于一个完善系统来说,往往很多时候又需要控制这些资源.通过在浏览器中插入ActiveX插件是一种很好的解决