1.Compose简介

Docker专题(十一)-Docker-Compose_mysql
Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。它是一个定义和运行多容器的docker应用工具。使用compose,你能通过YMAL文件配置你自己的服务,然后通过一个命令,你能使用配置文件创建和运行所有的服务。

Compose的代码主要使用Python编写,其开源地址为:​​https://github.com/docker/compose​​。

我们知道在Docker中构建自定义的镜像是通过使用Dockerfile模板文件来实现的,从而可以让用户很方便定义一个单独的应用容器。而Compose使用的模板文件就是一个YAML格式文件,它允许用户通过一个docker-compose.yml来定义一组相关联的应用容器为一个项目(project)。

2. 下载并安装Docker-Compose

2.1.下载地址

去github.com去搜索docker-compose项目(docker官方提供的)
​​​https://github.com/docker/compose/releases​​​/
Docker专题(十一)-Docker-Compose_mysql_02
​​​https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64​

Docker专题(十一)-Docker-Compose_tomcat_03

2.2.安装Docker-Compose

将下载好的内容复制到Linux操作系统中
Docker专题(十一)-Docker-Compose_mysql_04
将docker-compose-Linux-x86_64改名字docker-compose

mv docker-compose-Linux-x86_64 docker-compose

修改docker-compose文件的权限.

chmod 111 docker-compose

Docker专题(十一)-Docker-Compose_docker_05
先将docker-compose文件放到/usr/local/docker-compose下.

cd /usr/local/
mkdir docker-compose
cd docker-compose
mv docker-compose /usr/local/docker-compose

Docker专题(十一)-Docker-Compose_mysql_06
配置docker-compose的环境变量.

vi /etc/profile
shift + g
export PATH=/usr/local/docker-compose:$PATH
esc
shift + zz
source /etc/profile

跳转到任意路径,输入docker-compose弹出提示即可. (如果出文找到命令,环境变量的问题.)

docker-compose -v

Docker专题(十一)-Docker-Compose_docker_07

3. 采用docker-compose管理MySQL&Tomcat

3.1.管理MySQL

新建一个目录mysql-compose

[root@VM_0_15_centos opt]# mkdir mysql-compose

在mysql-compose目录下创建一个docker-compose.yml文件,全部的信息都写在里面,使用docker-compose运行容器即可.

version: '3.1'                        # 版本号,根据docker-compose版本不同,可以书写的内容也不同.
services:
mysql: # 服务的名称
restart: always # 启动docker后,自动运行当前容器.
image: daocloud.io/library/mysql:5.7.24 # 指定镜像的路径
container_name: mysql # 容器的名称
ports:
- 3306:3306 # 映射的端口号
environment:
TZ: Asia/Shanghai # 指定时区
MYSQL_ROOT_PASSWORD: root # 指定root用户的密码.
volumes:
- /opt/docker_mysql/data:/var/lib/mysql # 数据卷的映射
command:
--character-set-server=utf8mb4 # 指定一些命令

在docker-compose.yml文件中,不要书写制表符

3.2.docker-compose常用命令

  1. 启动
docker-compose up -d
  1. 关闭并删除容器.
docker-compose down
  1. 启动已经存在的容器
docker-compose start
  1. 关闭当前容器
docker-compose stop
  1. 查看当前容器的日志
docker-compose logs -f
  1. 查看docker-compose正在管理的全部容器
docker-compose ps

基于docker-compose.yml文件管理容器. (一定要在docker-compose.yml文件所在目录下执行)

3.3 管理Tomcat

version: '3.1'
services:
tomcat:
restart: always
image: daocloud.io/library/tomcat:8.5.15-jre8
container_name: tomcat
ports:
- 8080:8080
environment:
TZ: Asia/Shanghai
volumes:
- /opt/docker_tomcat_webapps:/usr/local/tomcat/webapps
- /opt/docker_tomcat_logs:/usr/local/tomcat/logs

3.4 docker-compose配置Dockerfile一起使用

Docker专题(十一)-Docker-Compose_mysql_08
在docker-compose目录下来,创建docker-compose.yml

通过docker-compose管理使用Dockerfile生成的自定义镜像.

version: '3.1'
services:
ssm:
restart: always
build:
context: ../ # 指定Dockerfile所在的路径
dockerfile: Dockerfile # 指定Dockerfile文件名称
image: ssm:2.0 # 镜像名称
container_name: ssm_dockerfile
ports:
- 8081:8080
environment:
TZ: Asia/Shanghai

启动docker-compose

[root@VM_0_15_centos docker-compose]# docker-compose up -d
Creating network "docker-compose_default" with the default driver
Building ssm
Step 1/5 : FROM daocloud.io/library/tomcat:8.5.15-jre8
---> b8dfe9ade316
Step 2/5 : MAINTAINER bruce<bruceliu@126.com
---> Using cache
---> eca5deeb9e33
Step 3/5 : ADD oa.war /usr/local/tomcat/webapps/
---> b350262344bd
Removing intermediate container 0b2ba1e32626
Step 4/5 : EXPOSE 8080
---> Running in aae0e0b8e921
---> b6e253fe9f65
Removing intermediate container aae0e0b8e921
Step 5/5 : CMD /usr/local/tomcat/bin/startup.sh && tail -F /usr/local/tomcat/logs/catalina.out
---> Running in 4a49a76c8f90
---> 8636f7e169ec
Removing intermediate container 4a49a76c8f90
Successfully built 8636f7e169ec
WARNING: Image for service ssm was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating ssm_dockerfile ... done

查看容器:

[root@VM_0_15_centos docker-compose]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1b9d0da1be61 ssm:2.0 "/bin/sh -c '/usr/..." 6 seconds ago Up 5 seconds 0.0.0.0:8081->8080/tcp ssm_dockerfile
21027369d880 be4fbd9eb89c "/bin/sh -c '/usr/..." About an hour ago Up About an hour 0.0.0.0:9080->8080/tcp ssm1.0
17007245daed ee26c4ea7d56 "/bin/sh -c 'yum -..." About an hour ago Exited (127) About an hour ago elated_darwin
098a7ada822c daocloud.io/library/tomcat:8.5.15-jre8 "catalina.sh run" 14 hours ago Up About an hour 0.0.0.0:8080->8080/tcp tomcat
da9a62e80aaa daocloud.io/library/mysql:5.7.24 "docker-entrypoint..." 14 hours ago Up About an hour 0.0.0.0:3306->3306/tcp, 33060/tcp mysql

测试容器:
Docker专题(十一)-Docker-Compose_tomcat_09