docker入門のdocker file

4908 ワード

一.Dockerの構成
dockerはc/sアーキテクチャです
Docker Client:Dockerのクライアント
Docker Server:Docker daemonの主要なコンポーネントで、Docker Clientによって送信された要求を受信し、対応するルーティングルールに従ってルーティングを実現します.
Docker Registry:RegistryはDockerミラーの中央ストレージウェアハウス(pull/push)
docker pullコマンドでRegistry上のdockerミラーをサーバローカルにダウンロードできます
サーバーのローカルなdockerミラーをdocker pushコマンドでRegistryにアップロードできます
Registryは自動化プラットフォームを構築する上で、非常に重要な役割を果たしている.
Docker容器の起動速度は非常に速く、2つの面に現れている.
1.ディスク容量が小さい.dockerミラーは階層化技術を採用しているため、構築されたミラーサイズは、自身のサイズのみで、親ミラーのサイズは含まれていない.
2.メモリ消費量が少なく、dockerコンテナが共有するホストのカーネルで、操作のプロセス消費がない.
二.docker fileとは
なぜDockerfileをgitウェアハウスに保存し、プロジェクトごとにgitウェアハウスを作成しますか?
自動化プラットフォームによるdockerミラーの自動構築が容易
Docker fileはdockerミラーを自動的に構築するプロファイルで、Dockerfileのコマンドはlinux shellのコマンドと非常に似ています.
Docker fileは、ユーザーにdockerミラーの構築をカスタマイズさせ、#で始まるコメント行をサポートします.
一般的にDocker fileは4つの部分に分かれています
ベースミラー(親ミラー)情報
メンテナ情報
ミラー操作コマンド
コンテナ起動コマンド
三.dockerfile詳細
docker fileテンプレート、centosを例に
# MAINTAINER cary.liu
# MAINTAINER cary.liu
# DOCKER-VERSION 1.6.2#
# Dockerizing CentOS7: Dockerfile for building CentOS images
#FROM centos:centos7.1.1503

MAINTAINER cary.liu
ENV TZ "Asia/Shanghai"ENV TERM xterm
ADD aliyun-mirror.repo /etc/yum.repos.d/CentOS-Base.repo
ADD aliyun-epel.repo /etc/yum.repos.d/epel.repo
RUN yum install -y curl wget tar bzip2 unzip vim-enhanced passwd sudo yum-utils hostname net-tools rsync man && \
yum install -y gcc gcc-c++ git make automake cmake patch logrotate python-devel libpng-devel libjpeg-devel && \
yum install -y --enablerepo=epel pwgen python-pip && \
 yum clean all
RUN pip install supervisor
ADD supervisord.conf /etc/supervisord.conf

RUN mkdir -p /etc/supervisor.conf.d && \
mkdir -p /var/log/supervisor
EXPOSE 22
ENTRYPOINT ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"]
FROM centos:centos7.1.1503親ミラーに基づいて他のdockerミラーを構築します.親ミラー:docker pullコマンドで取得したり、自分で作成したりできます.MAINTAINER cary.liu Docker fileメンテナ情報ENV TZ "Asia/Shanghai" ENV(environment)環境変数を設定し、1つのDockerfileに複数書くことができます.上記の例では、dockerコンテナのタイムゾーンをShanghaiに設定します.
Docker fileには2つのコマンドがファイルをコピーできますADD aliyun-mirror.repo /etc/yum.repos.d/CentOS-Base.repoローカルファイルをdockerコンテナにコピーし、URLリンクアドレスの下のファイルをコピーすることもでき、ADDはパッケージを解凍する機能も備えている(gzip,bzip 2 or xzをサポート)COPY test /mydirローカルファイルをdockerコンテナにコピーRUN yum install -y curl wget.... RUNコマンドは、linuxのshellコマンド(the command is run in a shell-/bin/sh-c-shell form)とよく似ています.Dockerfileでコマンド(ENV、ADD、RUNなどのコマンド)を実行するたびにdocker image layerが生成されます.RUN pip install supervisor supervisorプロセス管理システムは、ADD supervisord.conf /etc/supervisord.confを使用してsupervisorのプライマリプロファイルを追加することを推奨し、dockerコンテナのRUN mkdir -p /etc/supervisor.conf.dに他のサービス「supervisor.conf」を起動するディレクトリを格納し、このディレクトリの下のすべてを作成する.confの最後のファイルはdockerコンテナを起動するとロードされますEXPOSE 22ポートマッピングEXPOSE:docker run-p:を使用してポートを硬化することを推奨ENTRYPOINT ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"]のDockerfileのうち最後のENTRYPOINTのみが有効であり、dockerコンテナを起動するたびにENTRYPOINTが実行されます.
以上のファイルは、最初のdockerミラーを生成するDockerfileであり、docker build命令によりdockerミラーを生成するdocker build -t csphere/centos:7.1 . Dockerfileが現在のディレクトリの下にある場合、ポイントを入力.現在のディレクトリのDockerfileをロードできます.現在のディレクトリでdocker build-t csphere/centosを実行する必要がない場合は、7.1相対パスのDockerfile dockerミラーの命名規則registry_をロードします.url/namespace/image_name:tagデフォルトtagはlatest Dockerミラーを構築する際、自分の内部のyumソースがあれば、自分の内部のyumソースアドレスに置き換えることで、構築速度を速めることができます.1回目のコンストラクションに失敗すると、一部のミラーlayerが生成され、2回目のコンストラクションでは、1回目のコンストラクションで生成されたlayer(use cache)に基づいてコンストラクションが続行されます.
ミラーの表示:
docker images現在のホストにローカルにあるdockerミラーを表示
REPOSITORY     TAG  IMAGE ID        CREATED           VIRTUAL SIZE
csphere/centos    7.1     185ef7b101a8   40 minutes ago  451.9 MB

docker runによるdockerコンテナの生成
docker help run#docker runコマンドの使用方法の表示
日常業務でよく使われるパラメータを紹介します.
docker run-it#起動dockerコンテナフロントエンドdocker run-d#起動dockerコンテナバックグラウンド
docker run -p docker run -P
DockerfileにはEXPOSE 22というコマンドがあります.-Pを使用すると、ホストは使用されていないポートとdockerコンテナの22ポートをランダムに選択してポートマッピングを行い、dockerホストまたはコンテナが再起動すると、ホストは使用されていないポートとdockerコンテナの22ポートをランダムに選択してポートマッピングを行い、ポートが変化します.
22:22:22のような-pを使用すると、dockerホストまたはコンテナの再起動後も、22:22ポートはこのようにマッピングされ、変更されません.
生成docker容器docker run -d -p 2222:22 --name base csphere/centos:7.1パラメータの説明:-dバックグラウンド実行-itフロントインタラクティブ実行-P 22ホストの未使用のランダムポートをコンテナの22ポートにマッピング-p 2222:22ホストの2222ポートをコンテナの22ポートにマッピング--name baseコンテナにbase csphere/centosと命名:7.1このミラーミラーミラーを使用してdockerコンテナを作成する
Dockerコンテナ(実行済みミラー)の表示docker pspsデフォルトではコンテナが「running」の状態にある場合のみ、コンテナリストが表示されますdocker ps -a
ps-aはすべてのコンテナのリストを表示します