1.Compose简介
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/
https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64
2.2.安装Docker-Compose
将下载好的内容复制到Linux操作系统中
将docker-compose-Linux-x86_64改名字docker-compose
mv docker-compose-Linux-x86_64 docker-compose
修改docker-compose文件的权限.
chmod 111 docker-compose
先将docker-compose文件放到/usr/local/docker-compose下.
cd /usr/local/
mkdir docker-compose
cd docker-compose
mv docker-compose /usr/local/docker-compose
配置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
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常用命令
- 启动
docker-compose up -d
- 关闭并删除容器.
docker-compose down
- 启动已经存在的容器
docker-compose start
- 关闭当前容器
docker-compose stop
- 查看当前容器的日志
docker-compose logs -f
- 查看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-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
测试容器: