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を例に
Docker fileには2つのコマンドがファイルをコピーできます
以上のファイルは、最初のdockerミラーを生成するDockerfileであり、docker build命令によりdockerミラーを生成する
ミラーの表示:
docker images現在のホストにローカルにあるdockerミラーを表示
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コンテナ(実行済みミラー)の表示
ps-aはすべてのコンテナのリストを表示します
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 ps
psデフォルトではコンテナが「running」の状態にある場合のみ、コンテナリストが表示されますdocker ps -a
ps-aはすべてのコンテナのリストを表示します