Docker 简明手册(3:docker-compose)
起初
这篇名为《Docker紧凑手册》的文章由四个部分组成。
其他的文章可以在这里找到。
: 在中国境内展示这篇文章的目的。
我想对Docker-compose一文难以启动多个容器进行简要总结。
Docker Compose (一种容器编排工具)
在Docker主机上,可以通过组合多个容器来使用。如果使用Docker网络,可以实现这一点。然而,需要注意启动顺序并进行执行是一个问题。在这种情况下,我们还需要使用docker run命令,并通过–name参数为其命名,使用–mount参数进行挂载设置……以确保准确按顺序执行长命令。真麻烦!
Docker-compose 是通过读取定义文件来执行创建、停止和销毁这一系列繁琐的容器操作。
使用docker-compose工具,可以将要执行和复制的文件等统一放在一个文件夹中的定义文件(docker-compose.yml)中。
当使用docker-compose工具执行此文件时,会创建卷和网络,并一起启动容器。
Docker Compose 的好处
-
- 不再需要指定传统必要的长参数,如docker run等。
-
- 可以一次启动多个容器。
-
- 可以指定启动顺序。
-
- 可以一次停止和删除多个容器。
- 启动容器后可以执行命令等初始化操作。
安装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命令。
ただしイメージとボリュームはオプション引数による指定が必要startサービスを開始するstopサービスを停止するrunコンテナを実行するexecコマンドを実行するpsコンテナを一覧表示するconfigComposeファイルの確認と表示をするkillコンテナを強制停止するrestartサービスを再起動するbuildサービス用のイメージを構築または再構築するeventsコンテナからリアルタイムにイベント受信
常用的 up 命令参数如下所示。
我认为常用的选项是 -d。
・使用docker-compose up命令的选项参数
–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的选项参数。
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文件参考。
ビルドコンテキストへのパスを含む文字列として
指定することができます。
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. 音量
定义容器使用的卷。
您可以使用选项指定驱动程序名称等。
以下是主要选项。
このボリュームは予め作成されている必要があります。
external true, external: name: 等で指定した場合
docker-compose down -v をしても削除されません。
使用Docker Compose对服务进行单独操作
有时候可能会有只启动或操作一个容器的情况。在这种情况下,您可以使用docker命令,但通过使用docker-compose命令,您可以根据docker-compose.yml文件执行命令并考虑依赖关系。(*例如,在运行应用程序之前启动数据库并应用depends-on设置)
docker-compose コマンドと docker コマンドの対比抜粋
在操作单个容器时,您可以按照以下方式执行命令。
常见的命令可能是 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