????博客主页:
????@不会压弯的小飞侠
✨欢迎关注:
????点赞
????收藏
⭐留言
✒
✨系列专栏:
????Docker学习专栏
✨学习社区:
????不会压弯的小飞侠
✨知足上进,不负野心。
????欢迎大佬指正,一起学习!一起加油!
????安装 Docker Compose
Docker Compose 目前也是由 Docker 官方主要维护,但其却不属于 Docker Engine 的一部分,而是一个独立的软件。所以要在 Linux 中使用它,还必须要单独下载使用。
Docker Compose 是一个由 Python 编写的软件,在拥有 Python 运行环境的机器上,可以直接运行它,不需要其它的操作。可以通过下面的命令下载 Docker Compose 到应用执行目录,并附上运行权限,这样 Docker Compose 就可以在机器中使用了。
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$
$ sudo docker-compose version
docker-compose version 1.21.2, build a133471
docker-py version: 3.3.0
CPython version: 3.6.5
OpenSSL version: OpenSSL 1.0.1t 3 May 2016
也能够通过 Python 的包管理工具 pip 来安装 Docker Compose。
$ sudo pip install docker-compose
????Docker Compose 的基本使用逻辑
如果将使用 Docker Compose 的步骤简化来说,可以分成三步。
- 如果需要的话,编写容器所需镜像的 Dockerfile;
- 编写用于配置容器的 docker-compose.yml;
- 使用 docker-compose 命令启动应用
????编写 Docker Compose 配置
配置文件是 Docker Compose 的核心部分,通过它去定义组成应用服务容器群的各项配置,而编写配置文件,则是使用 Docker Compose 过程中最核心的一个步骤。
Docker Compose 的配置文件是一个基于 YAML 格式的文件,YAML 是一种清晰、简单的标记语言。
与 Dockerfile 采用 Dockerfile 这个名字作为镜像构建定义的默认文件名一样,Docker Compose 的配置文件也有一个缺省的文件名,也就是 docker-compose.yml。
Docker Compose 配置文件:
version: '3'
services:
webapp:
build: ./image/webapp
ports:
- "5000:5000"
volumes:
- ./code:/code
- logvolume:/var/log
links:
- mysql
- redis
redis:
image: redis:3.2
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=my-secret-pw
volumes:
logvolume: {}
????启动和停止
最常使用的 Docker Compose 命令就是 docker-compose up 和 docker-compose down 了。
docker-compose up 命令类似于 Docker Engine 中的 docker run,它会根据 docker-compose.yml 中配置的内容,创建所有的容器、网络、数据卷等等内容,并将它们启动。与 docker run 一样,默认情况下 docker-compose up 会在“前台”运行,可以用 -d 选项使其“后台”运行。
$ sudo docker-compose up -d
docker-compose 命令默认会识别当前控制台所在目录内的 docker-compose.yml 文件,而会以这个目录的名字作为组装的应用项目的名称。如果需要改变它们,可以通过选项 -f 来修改识别的 Docker Compose 配置文件,通过 -p 选项来定义项目名
$ sudo docker-compose -f ./compose/docker-compose.yml -p myapp up -d
docker-compose up 相反,docker-compose down 命令用于停止所有的容器,并将它们删除,同时消除网络等配置内容,也就是几乎将这个 Docker Compose 项目的所有影响从 Docker 中清除
$ sudo docker-compose down
????容器命令
除了启动和停止命令外,Docker Compose 还提供了很多直接操作服务的命令。
Docker Engine 中,如果我们想要查看容器中主进程的输出内容,可以使用 docker logs 命令。而由于在 Docker Compose 下运行的服务,其命名都是由 Docker Compose 自动完成的,如果直接使用 docker logs 就需要先找到容器的名字,这显然有些麻烦了。可以直接使用 docker-compose logs 命令来完成这项工作。
$ sudo docker-compose logs nginx
过docker-compose create,docker-compose start 和 docker-compose stop 可以实现与 docker create,docker start 和 docker stop 相似的效果,只不过操作的对象由 Docker Engine 中的容器变为了 Docker Compose 中的服务。
$ sudo docker-compose create webapp
$ sudo docker-compose start webapp
$ sudo docker-compose stop webapp