テスト環境を構築するベースのドッキングウィンドウ

ディレクトリ

0x01の紹介

基本操作ミラーが0x02

コンテナ0x03の基本操作

0x04のコンテナを変更し、保存します

Dockerfileを用いて0x05のカスタマイズされたイメージ

0x01の紹介

ドッカーは、アプリケーションコンテナエンジンのオープンソースであり、開発者は、軽量、ポータブルコンテナに自分のアプリケーションとの依存関係をパッケージ化し、任意の人気に公開することを可能にするオープンソースのGo言語に基づいて、Apache2.0の合意に従いますLinuxマシン上で、仮想化することができ、コンテナは互いに、より重要であるパフォーマンスのオーバーヘッドの間(iPhoneアプリと同様)任意のインターフェイスを持っていません。サンドボックス機構の完全な使用は、我々はすぐに構築することができるドッキングウィンドウで非常に低いコンテナですテスト環境の多くのより軽いVM。

镜像:テンプレートドッカーコンテナを作成するために使用されます

容器:スタンドアロンアプリケーションまたはグループの

仓库:集中ストレージをミラーリング、制御コードリポジトリ、ドッカーハブ(https://hub.docker.com)内のコードが使用するための大きな集光ミラーを提供することを理解することができます

ここでUbuntu18を実施するために使用されます

基本操作ミラーが0x02

ドッキングウィンドウは、オンラインコンテンツがたくさんある、インストールを詳しく説明しません。

倉庫から画像を取り込みます

検索ミラー

docker search image_name

ここでnginxのへ例

ファイル

あなたは、お問い合わせ後5つのコンテンツが順番に、ある見ることができます。

ミラーはビルドを自動化によって生成された場合、公式かどうかを、取得した星の数、名前、説明

あなたは、検索結果をフィルタリングする場合、それは次のコマンドで行うことができます

それは公式であるかどうか

docker search --filter "is-official=true" image_name

ファイル

それは自動化を構築しているかどうか

docker search --filter "is-automated=true" image_name

ファイル

星の数よりも大きいです

docker search --filter starts=100 image_name

ファイル

ダウンロード画像

docker pull image_name

ファイル

これは、スピードに完全に依存している、我々は、国内の情報源の交換を通じて高速化することができます

Linux位置:
/etc/docker/daemon.json
Windows位置:
%programdata%\docker\config\daemon.json

することができ、設定ファイルに以下の設定内容を追加します。

{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

ドッカーズは、変更の完了後にサービスを再起動する必要があります

ファイル

ビューミラーローカルプレゼンス

docker images

ファイル

5つのコンテンツもありますが、彼らは以下のとおりです。

作成した名前、ラベル、ID、ミラー、ミラーサイズ

ローカルミラーを削除します

docker rmi image_name

ファイル

私は実行されません

コンテナ0x03の基本操作

私たちは、上記の画像を取得し、あなたが今、ミラーを介してコンテナを作成することができます

コンテナを作成します。

docker run -itd --name=container_name image_name

PS:

-i:対話モードで実行容器

-d:背景コンテナとコンテナのIDを返します

-t:容器は、擬似入力端子を再割り当て

--name:コンテナの名前をカスタマイズします

ファイル

ここでのメッセージは、IDのコンテナを返すことで、コンテナIDは、時間の文字列が、最初の数が、その一意性を示すのに十分です見に戻って実行します

容器の動作を確認

docker ps

ファイル

7つのコンテンツがありますが、彼らは以下のとおりです。

容器が始まった後、コマンドが実行されるミラーリングコンテナID、時刻、ステータス、ポートを作成し、カスタム名

(停止を含む)すべてのコンテナを見ます

docker ps -a

コンテナを停止します

docker stop container_name/container_id

ファイル

その後、我々は、血管コマンドの結果にすべての方法を確認してみてください

ファイル

コンテナを開始

docker start container_name/container_id

ファイル

再起動した容器

docker restart container_name/container_id

ファイル

コンテナを削除します。

docker rm container_name/container_id

ここでは、コンテナのIDの使用を証明するために来ます

あなたは、コンテナを削除したい場合は、コンテナが最初に遮断しなければなりません

ファイル

0x04のコンテナを変更し、保存します

あなたは、コンテナを削除すると、コンテナを再作成し、あなた以前に変更操作が保存されませんので、我々は血管の保存操作を関与させる必要があるため、なぜ、保存操作を持っています

容器に

docker exec -it container_name/container_id command

ファイル

終了コンテナ

exit

ファイル

上記の動作をテストするために、ファイルを作成することです

削除が存在しない場合、コンテナは、まだ存在しているの変更を再起動するために停止した後

再起動後:

ファイル

後に削除します:

ファイル

変更をコミット

docker commit -a "author" -m "message" container_name/container_id new_image_name:tag_name

PS:

-a:著者を指定するオプションのパラメータ

-m:オプションのパラメータは、それが作られた自分自身を変更する旨の情報を提出します

new_image_name:鏡の新しい名前をカスタマイズします

タグ名:ラベルの新しいイメージは、デフォルトでは最新のものです

修飾まず、第1シリーズ

ファイル

終了後、我々は修正操作をコミット

ファイル

見つかったミラー缶IDは、提出後に返されます

その後、我々は新たに作成された画像により変更操作の前にコンテナを保存するかどうかを見て開始します

ファイル

ファイル

コンテンツで見つけることができますがあります

PSは:ブート時に書き込むことができない場合は、カスタムがあまりにも、その後、タグ名の開始時に値を追加する必要がある場合は、カスタムタグ名を持っていない場合もあり、我々はタグ名のデフォルトを見る必要ポイントは、最新のものです

ポートマッピング

なぜポートマッピング?

すべてのコンテナで実行されている、と私たちは私たちのホストを提供することができますので、これだけのポートマッピングは、私たちが外から良いコンテナを設定するシステムにアクセスします。

docker run -itd --name=container_name -p 宿主机端口号:容器端口号 image_name

ファイル

そして、コンテナのnginxのポート80へのアクセスにローカルポート8080をご覧ください。

ファイル

マウントファイル

あなたは、コンテナに必要性が絶対パスを記述するためのディレクトリをファイルをマウントすることができます

docker run -itd --name=container_name -v /宿主机文件目录/文件名:/容器文件目录/文件名 image_name

ファイル

その後、我々は8080の結果でローカルポートの外観を訪問しました

ファイル

PS:ローカルファイルが変更された場合、コンテナは対応する変更になります

ホストとコンテナの間でファイルをコピーします。

docker cp 容器名:/容器文件目录/文件名 /宿主机文件目录/文件名
docker cp /宿主机文件目录/文件名 容器名:/容器文件目录/文件名

ファイル

相互接続コンテナ

コンテナとコンテナの間で動作することができ、各コンテナは、それを組み合わせて動作するように要求された場合にのみドッキングウィンドウ機能を提供し、合わせて複数の容器を起動する必要があります。

docker run -itd --name=container_name --link 要关联的容器名字:容器在被关联容器中的别名 image_name

ここでは、PHPとMySQLは、二つの容器で動作するように実証します

まず最初にPHPとMySQLのバックミラーをダウンロード

ファイル

ファイル

ファイル

まずは、MySQLのコンテナを始めましょう

PHPのMySQLを実行しているのこの組み合わせが依存するので、それでは、MySQLのコンテナを起動させ、および生成されたデータベースの内容が非常に重要になりますので、その後、データが保存されていないコンテナを削除するので、私たちMySQLのホストコンテナをマウントするために我々の方法でディレクトリをマウント使用

初期化する-eオプションで、-eパラメータは、環境変数情報コンテナに渡されたので、ここで我々はまた、MySQLのrootのパスワードを初期化して動作する必要があります

ファイル

機能のMySQL8バージョンなので、我々は上のrootのパスワードをリセットする必要があります

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'wuxin';

いくつかの操作についてMySQL8は「を参照してくださいすることができますMySQL8.0操作コマンド

ファイル

その後、通常の着陸をすることができます

ファイル

そして、単純なデータ挿入

ファイル

そして、PHPコンテナを開始

ファイル

そして、MySQLへの接続を確立

ファイル

PDO_MYSQLは何のプラグインを見つけていないので、あなたがインストールする必要があり、独自のドッキングウィンドウは、内蔵のダウンロードモード

ファイル

その後、我々は、私のPHPコードを変更します

ファイル

私たちは、容器を連想するとき注意深い観察は、IPアドレスの代わりに、ここでは、データベース接続のアドレスが書かれているMySQLを見つけることができるはず、別名、ここでは次の図のmysqlは実際には、内容が示されていること引かれた直線を果たしました

ファイル

、そして、多くの場合、IPアドレスを変更しますエイリアスを使用する場合は、任意の問題があるないためです。

その後、再び実行ドッカを入力します。

ファイル

Dockerfileを用いて0x05のカスタマイズされたイメージ

Dockerfileは、ドッキングウィンドウがコマンドを読み取って画像を構築することになる、Linuxのコマンドを含むファイルです。

コンテンツの構造

:Dockerfileは、一般的に4つの分割
管理者情報、操作指示及び容器ミラーリング起動時に実行される命令情報ベース画像

ファイル名を指定して実行Dockerfile

docker build -t image_name:tag_name

または実行するには、-fパラメータでファイルの場所を指定するには

docker build -f /path/Dockerfile

詳細なコマンド

PS:あなたは複数行のコマンドに属している場合は、最終用途での&&改行

FROM:ベースイメージを指定し、最初のコマンドでなければなりません

FROM <image>
FROM <image>:<tag>
FROM <image>@<digest>
例:
FROM centos:7.0

MAINTAINER:管理者情報

MAINTAINER <name>
例:
MAINTAINER wuxin

RUN:ミラーを構築するときに実行するコマンドを

RUN <command>
RUN ["executable", "param1", "param2"]
例:
RUN yum install nginx
RUN ["/bin/executable", "param1", "param2"]

ADD:ローカルファイルにコンテナを追加するか、ネットワークリソースにアクセスすることができ、tarファイルが自動的に解凍されます

ADD <宿主机文件路径><容器路径>
例:
ADD test* /test/  添加所有以test开头的文件
ADD tes?.txt /test/  ?可以替代一个单个字符

COPY:ADDのような機能が、自動的に解凍することはできませんが、ネットワークリソースにアクセスすることはできません

CMD:コンテナの起動時に他のコマンドを実行した場合、実行されるコンテンツが指定され、ここで内容が上書きされます

CMD ["executable", "param1", "param2"]  执行可执行文件
CMD command param1 param2  执行shell内部命令
例:
CMD ["/usr/bin/wc", "--help"]
CMD echo "This is a test"

PS:CMDを実行するために構築され、ミラーを指定するため、コンテナの起動時に実行するコマンドを指定RUNコマンド

ENTRYPOINT:CMDと同様のコマンド実行構成コンテナが開始されると、実行され、ドッキングウィンドウの実行他のコマンドを実行している場合でも、指定されました

例:
ENTRYPOINT ["/bin/echo","Hello"]

LABEL:メタデータミラーを追加します

LABEL <key>=<value> <key>=<value>
LABEL version="1.0" description="balabala"

ENV:環境変数の設定

ENV <key> <value>
例:
ENV name wuxin
ENV names balabala

PS:今度は唯一の変数を設定することができるように、キーコンテンツは、値が考慮されます後

EXPOSE:外の世界と対話するポートを指定します。

EXPOSE <port> [<port>]
例:
EXPOSE 80 443
EXPOSE 8888

PSは:輸出のポートに実行している場合、すべてのEXPOSE -pパラメータを使用する必要があり、ホストへのコンテナ港へのアクセスをさせて公開します

VOLUME:永続ディレクトリを指定するために使用されます

VOLUME ["/path/"]
例:
VOLUME ["/data"]
VOLUME ["/var/www", "/var/log"]

WORKDIR:作業ディレクトリ

WORKDIR /path/workdir
例:
WORKDIR /usr/local  此时的工作目录为/usr/local
WORKDIR nginx  此时的工作目录为/usr/local/nginx

PS:ドッキングウィンドウの実行を実行したときなどに設定した後、RUN、CMDコマンドの実行は、ディレクトリ内で行われ、今回の設定はパラメータによって覆われていてもよい-w

USER:ユーザー名またはUID、その後のRUNコマンド指定されたコンテナ・ランタイムは、指定したユーザーを使用します

USER user
USER user:group
USER uid
USER uid:gid
USER user:gid
USER uid:group
例:
USER wuxin

ARG:実行を構築するために渡される変数について

ARG <name>[=<default value>]
例:
ARG site
ARG build_user=www

ONBUILD:フリップフロップのミラーを設定します

ONBUILD [INSTRUCTION]
例:
ONBUILD ADD ./app/src
ONBUILD RUN /usr/local/bin/python-build –dir/app/src

PS:構成された画像は、他のミラーのベース画像として使用される場合、ミラーがトリガされるフリップフロップ

注意:Dockerfileは階層化され、時間の階層的な実装が実行されます

  • いいえ記事は、最初の公の場で自分自身現れなかっ:意図しないたわごと(wuxinmengyi)
  • スキャンコードへの懸念
  • ファイル

おすすめ

転載: www.cnblogs.com/wuxinmengyi/p/11591816.html