Docker 简明手册(3:docker-compose)

起初

这篇名为《Docker紧凑手册》的文章由四个部分组成。
其他的文章可以在这里找到。

投稿番号サブタイトル及びアクセス先1初歩・基本コマンド2マウントとデータ永続化3docker-compose (*本記事)4カスタムイメージを作成する

: 在中国境内展示这篇文章的目的。

我想对Docker-compose一文难以启动多个容器进行简要总结。

Docker Compose (一种容器编排工具)

在Docker主机上,可以通过组合多个容器来使用。如果使用Docker网络,可以实现这一点。然而,需要注意启动顺序并进行执行是一个问题。在这种情况下,我们还需要使用docker run命令,并通过–name参数为其命名,使用–mount参数进行挂载设置……以确保准确按顺序执行长命令。真麻烦!

Docker-compose 是通过读取定义文件来执行创建、停止和销毁这一系列繁琐的容器操作。

1d54fa053d39.jpg

使用docker-compose工具,可以将要执行和复制的文件等统一放在一个文件夹中的定义文件(docker-compose.yml)中。
当使用docker-compose工具执行此文件时,会创建卷和网络,并一起启动容器。

Docker Compose 的好处

    1. 不再需要指定传统必要的长参数,如docker run等。

 

    1. 可以一次启动多个容器。

 

    1. 可以指定启动顺序。

 

    1. 可以一次停止和删除多个容器。

 

    启动容器后可以执行命令等初始化操作。

安装Docker Compose

这是一个用于辅助docker-compose和Docker的Python工具。
它与Docker Engine不同,需要单独安装,
但是在Docker for Mac和Windows中,Compose已经包含在其中,
所以如果已经安装了上述工具,则无需担心。
为了确保,您可以使用下面的命令检查docker-compose的版本。

docker-compose --version
docker-compose version 1.27.2, build 18f557f9

使用docker-compose进行操作

docker-compose使用docker-compose命令和选项参数来处理和执行docker-compose.yml文件。

以下是常用的六个命令:上、下、开始、停止、运行、执行。下面的表格列出了其他命令类型的摘要。

・在中国土生土长的情况下,对以下内容进行释义:docker-compose命令。

コマンドコマンドの内容upコンテナを作成し起動するdownコンテナ、ネットワーク、イメージ、ボリュームをまとめて停止削除する。
ただしイメージとボリュームはオプション引数による指定が必要startサービスを開始するstopサービスを停止するrunコンテナを実行するexecコマンドを実行するpsコンテナを一覧表示するconfigComposeファイルの確認と表示をするkillコンテナを強制停止するrestartサービスを再起動するbuildサービス用のイメージを構築または再構築するeventsコンテナからリアルタイムにイベント受信

常用的 up 命令参数如下所示。
我认为常用的选项是 -d。

・使用docker-compose up命令的选项参数

upオプションオプション内容-dデタッチモード(バックグラウンド動作)で実行。よく使うと思います。–no-depsリンクしたサービスを表示しない–force-recreate設定やイメージに変更がなくても、コンテナ再生成する。
–no-recreateと同時指定不可–no-createコンテナがすでに存在していれば再生成しない。
–force-recreateと同時指定不可–no-buildイメージが見つからなくてもビルドしない–buildコンテナを開始前にイメージをビルドする–abort-on-container-exitコンテナが1つでも停止したら、全てのコンテナを停止する。
-dオプションと同時指定不可-t,–timeout **コンテナを停止する時のタイムアウト秒数。規定は10秒–remove-orpahnsComposeファイルで定義されていないサービス用のコンテナを削除

在down命令中,也有选项参数down。
如果有很多镜像或者不想在下次使用时保留镜像时,
我认为使用–rmi选项与down一起删除是一个好的选择。
运行docker-compose down –rmi all –volumes,
可以一次性删除镜像和卷。

将以下内容用中文重述,只需要一种选项:
・docker-compose down的选项参数。

downオプションオプション内容–rmi all, local破棄後にイメージも削除します。
allの指定をした場合、利用した全イメージを削除。
localの場合はimageにカスタムタグがないイメージのみとなります。–v,–volumesvolumesに記述されているボリュームを削除する。
ただしexternal指定されている物は除く–remove-orphansdocker-compose.ymlで定義していないサービスのコンテナも削除する

在使用docker-compose down、up时要注意。

当进行docker-compose up和docker-compose down时,如果docker-compose.yml文件不同,
则docker-compose down将根据当前的docker-compose.yml文件进行操作。
如果在up操作后,容器描述被删除,即使执行down操作也不会销毁容器。
请注意防止容器的残留删除以及意外删除容器和网络。

docker-compose.yml文件的编写方式

docker-compose.yml文件需要定义三个内容:服务、网络和卷。
此外,yml格式的文件需要按照缩进的块进行编写。
如果缩进错误,则所写内容将无法反映,并出现错误。
另外,不能使用制表符作为缩进,需要注意。

docker-compose.yml文件的必要描述如下:

1. 版本定义

截至2020年9月,当前版本为3.8。
在指定版本时,如果写到”3″,则适用的是3.0版本。
若要应用次要版本的设置,请将其写为”3.8″,否则将不会应用。

注意:在指定要使用的Compose文件版本时,确保同时指定主要和次要版本号。如果没有给出次要版本号,默认使用0,而不是最新的次要版本。因此,后续版本中添加的功能将不受支持。

版本控制

2. 服务 (fú wù)

指的是构成整个组件的每个容器。
它是docker-compose.yml配置的核心部分。

请按照下面的格式来写设置服务。

services:
  サービスAの名前:
    サービスAの設定
・・・
  サービスBの名前:
    サービスBの設定  

以下是从官方网站中提取出来的常用服务设置。详细信息请参阅官方网站。Compose文件参考。

サービス項目内容補足事項image利用するイメージを指定するredis,postgres,mysql 等portsポートマッピングを利用するpostgres 5432:5432 等buildビルド時に設定される。
ビルドコンテキストへのパスを含む文字列として
指定することができます。build . の場合
カレントディレクトリ内のDockerfileを
参照する。depends_on別のサービスに依存することを示す。
docker-compose up,downする時に
指定したサービスが先に起動または終了
するようになる。app側にてdbへの設定で使用する 等volumesバインドマウントやボリュームマウントを定義する–mountオプションのように type:,source: 等
詳細設定で記述する事も可能command起動時の既定のコマンドを上書きするbundle exec rails s 等environment環境変数を設定します。DBのパスワード、ユーザー名 等

建议您在第一次使用时检查上述意外中的许多服务设置项。从3.8版本开始,新增了一个指定副本集数量的设置选项。即使是较小的版本也会有更新,因此在版本指定时需要注意。

3. 网络 luò)

定义服务参与的网络。由于经常被省略,所以不再赘述。

4. 音量

定义容器使用的卷。
您可以使用选项指定驱动程序名称等。
以下是主要选项。

項目内容driverボリュームドライバ名driver_optsボリュームのオプション。NFS等externaldocker-compose 管理対象外のボリュームであることを指定する。
このボリュームは予め作成されている必要があります。
external true, external: name: 等で指定した場合
docker-compose down -v をしても削除されません。

使用Docker Compose对服务进行单独操作

有时候可能会有只启动或操作一个容器的情况。在这种情况下,您可以使用docker命令,但通过使用docker-compose命令,您可以根据docker-compose.yml文件执行命令并考虑依赖关系。(*例如,在运行应用程序之前启动数据库并应用depends-on设置)

docker-compose コマンドと docker コマンドの対比抜粋

docker-compose コマンド対応する dockerコマンド動作docker-compose execdocker execコンテナ内でコマンド実行docker-compose rundocker run特定のコンテナを実行するdocker-compose startdocker start特定のサービスを開始するdocker-compose stopdocker stop特定のサービスを停止するdocker-compose rmdocker rm停止中のコンテナを削除するdocker-compose logsdocker logsコンテナの出力を表示する

在操作单个容器时,您可以按照以下方式执行命令。
常见的命令可能是 exec 和 run。
下面是执行在名为 web 的容器中以 /bin/bash 执行 shell 的命令。
在使用 docker 命令时需要 -it ,但是在使用 compose 时这些选项是不需要的。
这将改变命令提示符,并允许您在容器内输入命令。
(*12e7a08bb0bd 是容器的 ID,根据环境可能有所不同。)

❯ docker-compose exec web bash
root@12e7a08bb0bd:~# 
    シェル作業時の結果例(ls -a コマンド実行での抜粋)
❯ docker-compose exec web bash
root@12e7a08bb0bd:~# ls -a
.        .gem        .rspec     Dockerfile   README.md    config          log        public       storage         yarn.lock
..       .git        .rubocop.yml   Gemfile      Rakefile     config.ru       memo.md        public_data  tmp
.bash_history    .github     .rubocop_todo.yml  Gemfile.lock     app          db

以上是本篇文章的内容。感谢您的阅读。
广告
将在 10 秒后关闭
bannerAds