简介

官方文档:https://docs.docker.com/compose/

Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.

Using Compose is basically a three-step process:

  1. Define your app’s environment with a Dockerfile so it can be reproduced anywhere.
  2. Define the services that make up your app in docker-compose.yml so they can be run together in an isolated environment.
  3. Run docker compose up and the Docker compose command starts and runs your entire app. You can alternatively run docker-compose up using the docker-compose binary.

可以理解为容器编排的工具

安装

官方文档:https://docs.docker.com/compose/install/

  1. #官方的很慢
  2. sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  3. #可以网上找一个
  4. sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  5. #设置权限
  6. chmod +x /usr/local/bin/docker-compose
  7. #验证安装是否成功
  8. docker-compose --version

尝试

也可以参考harbor部署。
官方文档有一个例子:https://docs.docker.com/compose/gettingstarted/
完成前4步之后

  1. (base) [root@izuf64eqyhnvmcv50ay73gz ~]# curl localhost:5000
  2. Hello World! I have been seen 1 times.
  3. (base) [root@izuf64eqyhnvmcv50ay73gz ~]# curl localhost:5000
  4. Hello World! I have been seen 2 times.

分析一下
默认容器名/服务名:
composetestredis_1和composetest_web_1
当前文件夹名
服务名_副本数

  1. (base) [root@izuf64eqyhnvmcv50ay73gz ~]# docker ps -n=2
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. fa9c372da6c3 redis:alpine "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 6379/tcp composetest_redis_1
  4. 9016f9804b0f composetest_web "flask run" 3 minutes ago Up 3 minutes 0.0.0.0:5000->5000/tcp composetest_web_1
  5. (base) [root@izuf64eqyhnvmcv50ay73gz ~]#

网络:
可以看到docker-compose给我们维护了一个叫composetest_default的自定义网络。如果执行docker-compose down关闭服务,这个网络也会消失。

  1. (base) [root@izuf64eqyhnvmcv50ay73gz ~]# docker network ls
  2. NETWORK ID NAME DRIVER SCOPE
  3. c38149fd1d59 bridge bridge local
  4. e2c4cd73b5ac composetest_default bridge local
  5. 480762c35327 harbor_harbor bridge local
  6. a6d1fd635ad8 host host local
  7. a88653ee6e7a mynet bridge local
  8. 580f8272eeba none null local
  9. 702358f66c15 redis bridge local
  10. (base) [root@izuf64eqyhnvmcv50ay73gz ~]#

配置编写规则

docker-compose的核心:docker-compose.yml
官方文档:https://docs.docker.com/compose/compose-file/
注意看下版本,向下兼容的。

主要有几个重要部分:
version
版本,新版本docker可以兼容老版本
service
多个服务,通过服务名来访问。
结合docker run的参数来填写
可以用depends_on来设置服务启动的先后顺序
volume
数据卷设置
network
网络设置

尝试搭建WP博客

官方文档:https://docs.docker.com/samples/wordpress/