Docker学习笔记(二):Docker容器命令总结(从开发到部署 )

作者 | Saravanan Subramanian
翻译 | 袁思思
来源 | https://dzone.com/articles/docker-commands-for-development-to-deployment
转载:https://mp.weixin.qq.com/s?__biz=MzIzNzA5NzM3Ng==&mid=2651858043&idx=1&sn=d44eee15f19bc7fcbb1ab2f4cafd4199&chksm=f3295cb4c45ed5a21950de2f992ba6ebffdf9fdfab11591c6a93184874d07a28c0abc85a9ab7#rd

这篇文章的目的是为了理解在目标环境中端到端的、容器开发到部署的流程,并且列出了每个活动所需的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

Paste_Image.png
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

Paste_Image.png

3 运行容器

3.1 启动Docker容器

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

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

Paste_Image.png

“-d”选项在分离模式中运行容器,因此容器继续运行,甚至终端被关闭。

“-p”命令用来映射端口。在这个例子中,“-p 8080:8080”第一个端口号是Docker主机用的端口。第二个端口号是被Docker容器使用。根据这个命令,所有的流量到达Docker主机端口,将转到Docker容器端口。

3.2 检查当前运行的容器

$docker ps

Paste_Image.png

从上面的输出,我们看到一个Docker容器在名为“trusting_snyder.”中运行。

若要列出所有的容器,使用“- a”切换。

$docker ps -a

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

$docker logs <containerName>

Paste_Image.png

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

3.4 登陆到容器

$docker exec -it containerId /bin/bash

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

Paste_Image.png
3.5 停止运行的容器

$docker stop <containername>

Paste_Image.png
3.6 从Docker移除容器镜像

$docker rm imageId

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

$docker rmi -f <List Of Image Ids>

Paste_Image.png

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,757评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,478评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,540评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,593评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,903评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,329评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,659评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,383评论 0 195
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,055评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,337评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,864评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,227评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,820评论 3 231
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,999评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,750评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,365评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,260评论 2 258

推荐阅读更多精彩内容