この記事では、compose ファイル構造や docker compose ツールのインストールに関する知識など、docker での compose に関する知識を提供します。
docker compose とは何ですか?
Docker compose は、さまざまなコンテナーで実行されているさまざまなサーバーをオーケストレーションして統合するコンテナー オーケストレーション機能です。
は、ほとんどのコンテナを均一に管理するために使用できます。ネットワーク、ポート、マウントなどが含まれますが、これらに限定されません。コンテナのクラスタリングを実装するために使用できます。Compose は、関連する一連の操作を実装するためにも使用できます。オペレーションはコンテナを管理する機能です
1. compose ファイル構造
1. yml ファイル
compose におけるファイル構造は、通常、次の構造を指します。 yml ファイル. では、yml ファイルとは何でしょうか?
yml ファイルは、キーと値のペア形式のファイルです。
yml ファイルは形式に非常に敏感です。次の点に注意する必要があります:
- スペースのインデントのみを認識し、タブのインデント形式は認識しません。 key
- 通常、
- 文字の先頭で 2 つのスペースをインデントし、その後、コロン、カンマ、水平バー、その他の文字を含む (ただしこれらに限定されない) 1 つのスペースをインデントします。文字はスペース 1 つでインデントする必要があります。
- コメントに # の使用をサポートします。
- 特殊文字が含まれる場合は、一重引用符で囲む必要があります。
- ブール値引用符で囲む必要があります
例:
house:
family:
name: Doe
parents:
- John
- Jane
children:
- Paul
- Mark
- Simone
address:
number: 34
street: Main Street
city: Nowheretown
zipcode: 1234
yml ファイル形式 たとえば、上記では 1 レベルの対応が必要で、異なるレベルの間には 2 つのスペースがあります。
注: キーに 1 つのレベルで複数の値がある場合は、次のレベルで使用できます。また、短い水平バーで始まり、いくつかの終わりの水平バーを書く 2 つの空のスペースもあります。
2. Compose 設定で一般的に使用されるフィールド
#フィールド | 説明 |
build dockerfile centtext | Dockerfile ファイル名を指定してイメージ コンテキストのパスを構築します |
images | 指定しますイメージ |
command | デフォルトのコマンドを上書きしてコマンドを実行します |
#コンテナ名 | 指定しますコンテナ名は一意であるため、コンテナ名。カスタム名を指定した場合、スケールを作成することはできません |
deploy | デプロイメントおよび実行サービスに関連する構成を指定します。また、Swarm モードでのみ使用できます |
環境 | 環境変数の追加 |
ネットワーク | ネットワークに参加 |
ports | -p と同じようにコンテナ ポートを公開しますが、ポート番号は 60 より大きい必要があります |
volumts | ホスト パスまたはコマンド ボリューム |
restart | 再起動戦略、デフォルトはいいえ、常に、障害時、停止しない限り |
hostname | コンテナホスト名 |
build: ミラー構築時の定義方法
dockerfile: dockerfile を使用して構築されるメソッド
context: サービス docerfile ファイルのパス
images:使用するイメージ名、例: イメージ: イメージ名、注意: 後ろにスペースがあります
コマンド: ステートメントを実行します
コンテナ名: コンテナーの名前は一意であるため、コンテナーの名前を指定するために使用されます。カスタム名を指定すると、スケーリング (レプリカ セットの設定) はできません
#レプリカ セット: イメージを複数のコンテナーに作成します。これらの複数のコンテナーの実行環境などはまったく同じです。コンテナ アーキテクチャ内のコンテナが停止した場合、同一のコンテナを直接起動してレプリカ セットの数を維持できる、これがレプリカ セットの概念であり、K8s の核心でもあります。マイクロサービスの速度を向上させ、災害復旧を改善し、高い同時実行パフォーマンスを実現できます。
deploy: これはコントローラーであり、k8s ではレプリカ セットを制御および管理するプラグインです。
restart: 再起動戦略。デフォルトではシャットダウン後に起動しません。常に起動すると、手動シャットダウンか非手動シャットダウンかに関係なく、閉じたコンテナが自動的に起動します。クローズされたステータスのみをプルします。コンテナは、失敗時にゼロ以外のリターン コードを持つコンテナのみを起動します。
3. Compose の外部共通コマンド
フィールド | 説明 |
build
イメージ情報の再構築 |
|
ps 現在 docker compose によって制御されているコンテナを一覧表示します |
|
up
コンテナを作成して開始します |
|
exec
コンテナ内でコマンドを実行します |
| ##scale
レプリカセットの数に相当するサーバーの起動数を指定します |
| top
コンテナ プロセス、docker compose によって制御されるプロセスによって開始されたすべてのコンテナを表示します |
| ログ
表示コンテナの出力情報 |
| down
コンテナ、ネットワーク、データボリューム、イメージの削除 |
| stop/start/ restart
stop /コンテナ サービスの開始/再起動 |
|
docker compose基本使用格式:docker-compose [options] [COMMAND] [ARGS…]
docker-compose选项:
- –verbose:输出更多调试信息
- –version:打印版本并退出
- -f /–file FILE:使用特定的compose模板文件,默认为docker-compose.yml
- -p /–project-name NAME:指定项目名称,默认使用目录名称
二、安装docker compose工具
1、下载
curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
首次连接下载的时候,可能会提示失误或者连接不上,可能是因为网络原因,可以多试几次
2、添加权限
文件在刚下载之后,默认是没有执行权限的,所以需要手动添加执行权限
chmod +x /usr/local/bin/docker-compos
3、运行docker-compose
docker-compose
可以看到,现在已经正常执行了
三、编译镜像
手动创建下面的文件(dockerfile文件之前有的话,直接拉取过来也是可以的)
tree
.
├── docker-compose.yml
├── nginx
│ ├── Dockerfile
│ ├── nginx-1.12.0.tar.gz
└── wwwroot
└── index.html
其中yml文件内部
cat docker-compose.yml
version: '3'
services:
nginx:
hostname: nginx
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- 1321:80
- 1707:443
networks:
- cluster
volumes:
- ./wwwroot: /usr/local/nginx/html
networks:
cluster:
nginx的dockerfile文件
cat ./nginx/Dockerfile
FROM centos:7
ADD nginx-1.12.0.tar.gz /tmp
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make &> /dev/null \
&& useradd -M -s /sbin/nologin nginx \
&& cd /tmp/nginx-1.12.0/ \
&& ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module &> /dev/null \
&& make &> /dev/null \
&& make install &> /dev/null
VOLUME ["/usr/local/nginx/html"]
EXPOSE 80
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
index.html文件中就是自己配置的网页信息,就不多做介绍了
确定之后,编译
docker-compose -f docker-compose.yml up -d
查看运行结果
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
da38007f09ab dockercompose_nginx "/usr/local/nginx/sb…" About a minute ago Up About a minute 0.0.0.0:666->80/tcp, :::666->80/tcp, 0.0.0.0:667->443/tcp, :::667->443/tcp dockercompose_nginx_1
#可以看到,这个端口信息就是我们在yml文件中设置的端口信息,直接在这个生效了
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
dockercompose_nginx latest b1e4b9dfa72d 3 minutes ago 478MB
访问网址端口,查看该网站页面
curl 192.168.75.51:666
hello
#显示结果
cat ./wwwroot/index.html
hello
推荐学习:《docker视频教程》
以上がDocker の基本構成ファイル構造とインストール ツール (詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。