From cc430d3442885459f693ef5c58194d5d06349e2e Mon Sep 17 00:00:00 2001 From: geminiyellow Date: Wed, 20 Jul 2016 11:34:54 +0900 Subject: [PATCH 1/5] docs(zh-cn): Update networking in a live container Provide documentation to map an additional port in a running container. --- zh-cn/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/zh-cn/README.md b/zh-cn/README.md index d7af5e1..8898aca 100644 --- a/zh-cn/README.md +++ b/zh-cn/README.md @@ -348,7 +348,11 @@ docker run -p 127.0.0.1:$HOSTPORT:$CONTAINERPORT --name CONTAINER -t someimage EXPOSE ``` -但是注意 EXPOSE 并不会暴露端口本身,只有 `-p` 这样做。 +但是注意 EXPOSE 并不会暴露端口,你需要用参数 `-p` 。比如说你要在 localhost 上暴露容器的端口: + +``` +iptables -t nat -A DOCKER -p tcp --dport -j DNAT --to-destination : +``` 如果你是在 Virtualbox 中运行 Docker,那么你需要转发端口(forward the port),使用 [forwarded_port](https://docs.vagrantup.com/v2/networking/forwarded_ports.html)。它可以用于在 Vagrantfile 上配置暴露端口段,这样你就可以动态的映射它们了: From ef3e25fa696cfcda02ca0314a8af2197e5f2bf55 Mon Sep 17 00:00:00 2001 From: geminiyellow Date: Wed, 20 Jul 2016 11:51:03 +0900 Subject: [PATCH 2/5] Added load save import export Example of load/save image and import/export container. Briefly explained the difference between them --- zh-cn/README.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/zh-cn/README.md b/zh-cn/README.md index 8898aca..fecddfd 100644 --- a/zh-cn/README.md +++ b/zh-cn/README.md @@ -13,6 +13,7 @@ * [仓管中心和仓库(Registry & Repository)](#仓管中心和仓库registry--repository) * [Dockerfile](#dockerfile) * [层(Layers)](#层layers) +* [加载/保存(Load/Save) 导入/导出(Import/Export)](#load-save-import-export) * [链接(Links)](#链接links) * [卷标(Volumes)](#卷标volumes) * [暴露端口(Exposing Ports)](#暴露端口exposing-ports) @@ -332,6 +333,38 @@ docker run -v /Users/wsargent/myapp/src:/src 可还可以考虑运行一个纯数据容器,像[这里](http://container42.com/2013/12/16/persistent-volumes-with-docker-container-as-volume-pattern/)所说的那样,提供可移植数据。 +## 加载/保存(Load/Save) 导入/导出(Import/Export) + +Docker 允许你加载/保存镜像以及导入/导出容器。 + +### 加载/保存镜像 + +从文件中加载镜像: +``` +docker load < my_image.tar.gz +``` +保存既有镜像: +``` +docker save my_image:my_tag > my_image.tar.gz +``` + +### 导入/导出容器 + +从文件中将容器作为镜像导入: +``` +cat my_container.tar.gz | docker import - my_image:my_tag +``` + +导出既有容器: +``` +docker export my_container > my_container.tar.gz +``` + +### 加载被保存的镜像和导入作为镜像导出的容器之间的不同 + +通过 `load` 命令来加载镜像,会创建一个新的镜像,并继承原镜像的所有历史。 +通过 `import` 将容器作为镜像导入,也会创建一个新的镜像,但并不包含原镜像的历史,因此生成的镜像会比使用加载方式生成的镜像要小。 + ## 暴露端口(Exposing ports) 通过宿主容器暴露输入端口是相当[繁琐,但有效](https://docs.docker.com/reference/run/#expose-incoming-ports)的。 From c242e50152e2e3155abbbfc9ab22ab79d1081e69 Mon Sep 17 00:00:00 2001 From: geminiyellow Date: Wed, 20 Jul 2016 11:52:19 +0900 Subject: [PATCH 3/5] Updated Table of contents --- zh-cn/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zh-cn/README.md b/zh-cn/README.md index fecddfd..4a5b4a3 100644 --- a/zh-cn/README.md +++ b/zh-cn/README.md @@ -13,7 +13,7 @@ * [仓管中心和仓库(Registry & Repository)](#仓管中心和仓库registry--repository) * [Dockerfile](#dockerfile) * [层(Layers)](#层layers) -* [加载/保存(Load/Save) 导入/导出(Import/Export)](#load-save-import-export) +* [加载/保存(Load/Save) 导入/导出(Import/Export)](#加载保存loadsave-导入导出importexport) * [链接(Links)](#链接links) * [卷标(Volumes)](#卷标volumes) * [暴露端口(Exposing Ports)](#暴露端口exposing-ports) From 466dd4243c78762e41e75a1a6611d3f3e11a2eb5 Mon Sep 17 00:00:00 2001 From: geminiyellow Date: Wed, 20 Jul 2016 11:55:31 +0900 Subject: [PATCH 4/5] Remove archive link to docker volumes The docker volume link from d-tech is causing a 403, removing. --- zh-cn/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zh-cn/README.md b/zh-cn/README.md index 4a5b4a3..5b5f79e 100644 --- a/zh-cn/README.md +++ b/zh-cn/README.md @@ -323,13 +323,13 @@ Docker 的卷标(volumes)是一个[free-floating 文件系统](https://docs.dock 查看[卷标进阶](http://crosbymichael.com/advanced-docker-volumes.html)来获取更多细节。Container42 [非常有用](http://container42.com/2014/11/03/docker-indepth-volumes/)。 -从 1.3 开始,你可以[映射宿主 MacOS 的文件夹作为 docker 卷标](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume)通过 boot2docker: +你可以[将宿主 MacOS 的文件夹映射为 docker 卷标](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): ``` docker run -v /Users/wsargent/myapp/src:/src ``` -你也可以用远程 NFS 卷标,如果你觉得你[有足够勇气](https://web.archive.org/web/20150306065158/http://www.tech-d.net/2014/03/29/docker-quicktip-4-remote-volumes/)。 +你也可以用远程 NFS 卷标,如果你觉得你[有足够勇气](https://docs.docker.com/engine/tutorials/dockervolumes/#/mount-a-shared-storage-volume-as-a-data-volume)。 可还可以考虑运行一个纯数据容器,像[这里](http://container42.com/2013/12/16/persistent-volumes-with-docker-container-as-volume-pattern/)所说的那样,提供可移植数据。 From f35ff1594a3eb16e9ecc93a478b27769cea5be86 Mon Sep 17 00:00:00 2001 From: geminiyellow Date: Wed, 20 Jul 2016 11:59:24 +0900 Subject: [PATCH 5/5] Moved Load/Save and Import/Export to Image section --- zh-cn/README.md | 63 +++++++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 34 deletions(-) diff --git a/zh-cn/README.md b/zh-cn/README.md index 5b5f79e..b299f81 100644 --- a/zh-cn/README.md +++ b/zh-cn/README.md @@ -13,7 +13,6 @@ * [仓管中心和仓库(Registry & Repository)](#仓管中心和仓库registry--repository) * [Dockerfile](#dockerfile) * [层(Layers)](#层layers) -* [加载/保存(Load/Save) 导入/导出(Import/Export)](#加载保存loadsave-导入导出importexport) * [链接(Links)](#链接links) * [卷标(Volumes)](#卷标volumes) * [暴露端口(Exposing Ports)](#暴露端口exposing-ports) @@ -168,7 +167,35 @@ docker run hello-world 虽然你可以用 `docker rmi` 命令来删除指定的镜像,但是这里有个称为 [docker-gc](https://github.com/spotify/docker-gc) 的工具,它可以以一种安全的方式,清理掉那些不再被任何容器使用的镜像。 -## 网络(Networks) +### 加载/保存镜像 + +从文件中加载镜像: +``` +docker load < my_image.tar.gz +``` +保存既有镜像: +``` +docker save my_image:my_tag > my_image.tar.gz +``` + +### 导入/导出容器 + +从文件中将容器作为镜像导入: +``` +cat my_container.tar.gz | docker import - my_image:my_tag +``` + +导出既有容器: +``` +docker export my_container > my_container.tar.gz +``` + +### 加载被保存的镜像和导入作为镜像导出的容器之间的不同 + +通过 `load` 命令来加载镜像,会创建一个新的镜像,并继承原镜像的所有历史。 +通过 `import` 将容器作为镜像导入,也会创建一个新的镜像,但并不包含原镜像的历史,因此生成的镜像会比使用加载方式生成的镜像要小。 + +## 网络(Networks) Docker 有[网络(networks)](https://docs.docker.com/engine/userguide/networking/dockernetworks/)功能。我并不是很了解它,所以这是一个扩展本文的好地方。这里有篇笔记指出,这是一种可以不使用端口来达成 docker 容器间通信的好方法。详情查阅[通过网络来工作](https://docs.docker.com/engine/userguide/networking/work-with-networks/)。 @@ -333,38 +360,6 @@ docker run -v /Users/wsargent/myapp/src:/src 可还可以考虑运行一个纯数据容器,像[这里](http://container42.com/2013/12/16/persistent-volumes-with-docker-container-as-volume-pattern/)所说的那样,提供可移植数据。 -## 加载/保存(Load/Save) 导入/导出(Import/Export) - -Docker 允许你加载/保存镜像以及导入/导出容器。 - -### 加载/保存镜像 - -从文件中加载镜像: -``` -docker load < my_image.tar.gz -``` -保存既有镜像: -``` -docker save my_image:my_tag > my_image.tar.gz -``` - -### 导入/导出容器 - -从文件中将容器作为镜像导入: -``` -cat my_container.tar.gz | docker import - my_image:my_tag -``` - -导出既有容器: -``` -docker export my_container > my_container.tar.gz -``` - -### 加载被保存的镜像和导入作为镜像导出的容器之间的不同 - -通过 `load` 命令来加载镜像,会创建一个新的镜像,并继承原镜像的所有历史。 -通过 `import` 将容器作为镜像导入,也会创建一个新的镜像,但并不包含原镜像的历史,因此生成的镜像会比使用加载方式生成的镜像要小。 - ## 暴露端口(Exposing ports) 通过宿主容器暴露输入端口是相当[繁琐,但有效](https://docs.docker.com/reference/run/#expose-incoming-ports)的。