如果想学习Docker
为什么是容器呢? (Why is it a container?)
容器是什么?
在学习Docker之前,首先要了解什么是容器以及与虚拟机的不同之处和优势。
首先,作为容器的具体示例,存在着在Docker之前就已经存在的LXC(Linux Containers),下面的页面对其进行了详细解释,非常易于理解。
对 Linux 容器 (LXC) 进行基础总结 – CTC 教育服务
理解コンテナ型仮想化的技术,可以认为是将用户空间分离,限制每个容器可见的进程、文件、网络、CPU/内存/设备等资源。
Docker和以前存在的容器LXC之间的区别是什么?
阅读以下文章可以理解到Docker相较于普通的LXC究竟添加了哪些内容。
尽管有很多东西被写入,但Docker主要的价值在于它为软件提供了一个类似于git/github基础设施的生态系统,通过确保镜像在任何平台上具有相同的运行方式,实现版本控制和共享等功能。这是我强烈感受到的重要性。
实际上,存在着一个名为Docker Hub(https://hub.docker.com/)的网站,并且这类注册表的存在是前提条件。
参考:与Docker Hub合作
尝试使用Docker进行实验
到了这个地步,先试试Docker吧。
Docker官方网站提供了丰富的文档资料。
请在网络上。
首先,如果想要亲自体验一下,可以通过下面的网页在Web上模拟学习的感觉。
在这里,您可以基于镜像启动容器,创建新的镜像,保存并将其推送到Docker Hub,从而体验一系列的操作流程,从镜像中启动服务,从而理解容器的概念。
手上的
如果你大致明白了的话,最好在自己的电脑上尝试安装。下面的文档涵盖了在各个平台上安装并进行Hello world的教程。
最佳做法
完成安装之后,您只需查看用户指南或从示例页面中选择您想要构建的内容,并使用Docker进行搭建即可。
在这种情况下,Docker存在各种最佳实践,比如“一个容器一个应用程序”,以保持可移植性,所以最好了解这些。
Dockerfile最佳实践。
http://docs.docker.com/articles/dockerfile_best-practices/
http://crosbymichael.com/dockerfile-best-practices.html
请适当概括以下上链接中的内容。
总体来说
-
- 出来る限り、すぐ止められ、すぐ立ち上げられるようにする
-
- イメージに必要のないファイルやディレクトリは.docerignoreに入れる
-
- 必要なものだけミニマムに入れる
-
- 1コンテナ1プロセス。複数プロセスはcontainer linkingでつなぐ
-
- コンテナレイヤを深くしすぎない
-
- 複数行に渡るパラメータをアルファベット順にソートする
- ビルドキャッシュの仕組みを理解し、うまく使おう
从
基本上我們建議使用官方的Docker作為基礎。作為Linux基礎,Debian映像是一個輕量且推薦的選擇。
跑
建议以以下方式写。
RUN apt-get update && apt-get install -y \
aufs-tools \
automake \
btrfs-tools \
build-essential \
curl \
dpkg-sig \
git \
iptables \
libapparmor-dev \
libcap-dev \
libsqlite3-dev \
lxc=1.0* \
mercurial \
parallel \
reprepro \
ruby1.9.1 \
ruby1.9.1-dev \
s3cmd=1.1.0*
-
- 改行し、アルファベット順に書くことで、読みやすくし、重複を防ぐ
RUN apt-get updateだけの行はキャッシュの問題を引き起こすため作ってはいけない。RUN apt-get update & apt-get install …とやる
RUN apt-get upgradeはやってはいけない。既に存在するfooをアップデートしたい場合apt-get install -y fooとやれば良い
バージョン指定する(e.g., package-foo=1.3.*)のもオススメ
曝光
在公開端口时,需要指定所公開的服務使用的常用端口。例如,Apache使用80端口,MongoDB使用27017端口。
實際上,我們可以通過映射到不同的端口號從外部連接,因此不需要刻意選擇一個不好理解的端口號。
环境
为了使每个应用程序都能轻松运行,需要正确设置 PATH。例如,如果是nginx,可以通过将 ENV PATH /usr/local/nginx/bin:$PATH,然后使用 CMD [“nginx”] 来让nginx在调用时启动。
另外,建议指定其他必需的环境变量。(例如,PGDATA)
还有其他需要了解的事项
Docker用户指南的结构如下所示。
-
- 使用Docker Hub入门
-
- 将应用程序Docker化:一个”Hello world”
-
- 使用容器工作
-
- 使用Docker镜像工作
-
- 将容器链接在一起
-
- 管理容器中的数据
-
- 使用Docker Hub工作
-
- Docker Compose
-
- Docker Machine
- Docker Swarm
如果你学习了教程和最佳实践,应该能够理解到2到4的程度。
以下则是我依照您的要求以中文方式重新表述的回答:
对于之后的内容,我们可以学习以下几个内容,以保证在使用Docker时能够高效运作:
1. Docker Hub,这是一个类似于GitHub的存储Docker镜像的平台。
5. Link(如果以端口通信设计,则可忽略),这是用来连接不同容器之间的通信。
6. Volume,这是用来保证即使丢弃容器,数据也不会丢失的一种技术。
最近发布了 Docker Compose、Machine 和 Swarm。
由于 Docker Compose 最初是作为 Fig 的衍生版本而来,因此在同时启动多个 Docker 容器时非常实用。
在AWS或其他基础设施上构建操作系统的Docker Machine和构建集群的Docker Swarm。虽然有很高的期望,但由于它还是测试版,我想再观察一段时间。