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<[email protected]
---> 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
測試容器: