如果想学习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用户指南的结构如下所示。

    1. 使用Docker Hub入门

 

    1. 将应用程序Docker化:一个”Hello world”

 

    1. 使用容器工作

 

    1. 使用Docker镜像工作

 

    1. 将容器链接在一起

 

    1. 管理容器中的数据

 

    1. 使用Docker Hub工作

 

    1. Docker Compose

 

    1. 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。虽然有很高的期望,但由于它还是测试版,我想再观察一段时间。

广告
将在 10 秒后关闭
bannerAds