译文 | 从开发到部署 Docker容器命令总结

来源:互联网 发布:mac注销用户快捷键 编辑:程序博客网 时间:2024/05/21 12:45

这篇文章的目的是为了理解在目标环境中端到端的、容器开发到部署的流程,并且列出了每个活动所需的Docker命令。

 

1 简介

全部的进程由开发的容器和相关软件组成,并且在开发环境中配置、运行和测试容器,发布容器镜像到Docker Hub中,最后部署Docker镜像,在目标环境中运行容器。本文假设你已经在开发和目标环境中安装好了Docker引擎。请参考6.3的安装说明。

 

2 开发容器镜像

为了构建容器镜像,我们必须创建一个dockerfile,它将包含所有必要的信息。请参考这个文档(https://nodejs.org/en/docs/guides/nodejs-docker-webapp/)来开发dockerfile。

 

2.1 构建Docker容器

 

$docker build -t containername .

 

这个命令将把Dockerfile放到当前的目录中。如果你的dockerfile名称不一样而且在不同的位置,可以使用-f 标签来指定dockerfile的名称。“docker build”命令将在“-t”标签指定的名称中构建容器镜像。


$docker build -t myapp .


 

2.2 镜像命名惯例


当在本地运行的时候,可以给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>



容器名称可以通过 “docker ps” 命令发现。

 

3.4 登陆到容器

 

$docker exec -it containerId /bin/bash


上面的命令将提示你使用容器的“bash”。

 


3.5 停止运行的容器

 

$docker stop <containername>


 

3.6  从Docker移除容器镜像

 

$docker rm imageId

 

使用“docker images” 或“docker images -a.”命令发现容器的imageId。


$docker rmi -f <List Of Image Ids>

 


上面的命令将强有力的删除指定的镜像。

 

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

 

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

 

4 发布容器镜像

Docker容器镜像可以发布到本地dockyard或公共Docker Hub。这两个过程和命令都是一样的。要在Docker Hub中发布Docker映像,首先在http://hub.docker.com上创建名称空间和资源库。

 

我用了我的命名空间“saravasu”和资源库“techietweak”来进行这个练习。


 

4.1 登陆Docker Hub

 

$docker login


如果你想登陆到本地的资源库,需要提供URL。如果URL不是特定的,那么这个命令将登陆到Docker Hub中。


$docker login http://localhost:8080


 

4.2 标记容器镜像


要将Docker容器映像推到Docker Hub,它必须以特定的格式标记:< Namespace > / < Repository >:< Version >。如果未指定该版本,将被视为“默认”。在下面的命令中,我标记了镜像:


$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中拉出容器镜像。如果你想从自己的dockyard拉出,使用“$docker login <hostname>”命令指定自己dockyard的主机名。


$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网站上可以找到。

原创粉丝点击