問題背景
上篇介紹了Docker拉取zookeeper,本章介紹一下docker的compose
注意事項(xiàng):
- 因?yàn)槲覍懙氖且粋€(gè)系列,在之前的文章介紹過的一般不會(huì)重復(fù)介紹,可以根據(jù)以下鏈接查看之前的知識(shí)點(diǎn)
- 默認(rèn)已安裝Centos7
- 默認(rèn)已安裝JDK
- 默認(rèn)開啟root權(quán)限
- 默認(rèn)已安裝mysql客戶端,如Navicat或Sqlyog
- 一個(gè)鏡像可以啟動(dòng)多個(gè)容器,第一次啟動(dòng)容器會(huì)自動(dòng)保存,下次啟動(dòng)容器可以使用 docker ps -a 查看所有容器ID和名字,然后使用 docker start [容器ID或名字] 進(jìn)行啟動(dòng)
Docker無介紹快使用,安裝部署hello測(cè)試(一)
Docker無介紹快使用,docker指令使用(二)
Docker無介紹快使用,docker數(shù)據(jù)卷Volumes掛載的使用(三)
Docker無介紹快使用,docker拉取mysql5.7及使用(四)
Docker無介紹快使用,docker拉取tomcat及使用(五)
Docker無介紹快使用,docker拉取Nginx(六)
Docker無介紹快使用,docker拉取redis(七)
Dockerfile的簡(jiǎn)介及使用(八)
Docker無介紹快使用,docker拉取rocketmq(九)
Docker-compose安裝
1 多個(gè)docker容器使用Docker Compose,通過一個(gè)配置文件來管理多個(gè)Docker容器,所有的容器通過services定義,使用docker-compose腳本來啟動(dòng),停止和重啟
2 在線安裝docker-compose,在linux上需要自己安裝docker-compose,windows和macos安裝docker時(shí)附帶安裝好了
github下載
sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
或者github太慢,daocloud下載
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
或者pip安裝
pip install docker-compose
3 添加執(zhí)行權(quán)限
sudo chmod +x /usr/local/bin/docker-compose
4 查看版本,docker-compose -v
docker-compose --version
Docker-compose示例
1 版本號(hào)需要兼容性,目前都是使用的3
version: "3" #版本號(hào)必寫
services: #必寫
tomcat: #容器名唯一
container_name: tomcat01 #指定容器名
#build #啟動(dòng)容器前根據(jù)Dockerfile構(gòu)建鏡像,再使用這個(gè)鏡像,不能與image同時(shí)使用
image: tomcat:8.0 #使用tomcat鏡像,版本號(hào)8.0
ports: #端口號(hào)映射
- 8080:8080 #宿主機(jī)端口:容器端口
depends_on: #依賴mysql,使用了這個(gè)指令,會(huì)優(yōu)先啟動(dòng)mysql,再啟動(dòng)tomcat
- mysql
networks: #指定容器使用的網(wǎng)橋,一個(gè)項(xiàng)目的容器在一個(gè)網(wǎng)橋里面
- gaogao
restart: always #啟動(dòng)docker時(shí),自動(dòng)啟動(dòng)tomcat01
tomcat01: #容器名唯一,與上面的名字不能相同
container_name: tomcat02 #指定容器名,推薦使用默認(rèn)名字,不會(huì)出現(xiàn)名字沖突
image: tomcat:8.0 #使用tomcat鏡像,版本號(hào)8.0
ports: #端口號(hào)映射
- 8081:8080 #宿主機(jī)端口:容器端口
depends_on: #依賴mysql,使用了這個(gè)指令,會(huì)優(yōu)先啟動(dòng)mysql,再啟動(dòng)tomcat
- mysql
networks: #指定容器使用的網(wǎng)橋,一個(gè)項(xiàng)目的容器在一個(gè)網(wǎng)橋里面
- gaogao
redis: #容器名唯一
image: redis:5.0.12
ports:
- "6379:6379"
networks:
- gaogao
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
mysql:
image: mysql:5.6
ports:
- "3306:3306"
environment: #類似于docker run -e MYSQL_ROOT_PASSWOAR=root
- "MYSQL_ROOT_PASSWORD=123456" #mysql的密碼
volumes: #容器目錄映射,docker-compose路徑必須存在,docker run可以自己創(chuàng)建路徑
- "/root/mysqlData:/var/lib/mysql" #絕對(duì)路徑,宿主機(jī)目錄:容器目錄
#- "mysqlData:/var/lib/mysql" #相對(duì)路徑,需要使用volumes聲明mysqlData,會(huì)自動(dòng)創(chuàng)建別名文件夾
networks:
- gaogao
networks: #聲明網(wǎng)橋,自動(dòng)創(chuàng)建
gaogao:
volumes:
db-data:
mysqlData: #聲明數(shù)據(jù)卷別名,必須加上冒號(hào)
2 啟動(dòng)docker-compose,-d后臺(tái)啟動(dòng),執(zhí)行指令時(shí),需要在docker-compose.yml文件夾下
docker-compose up
使用docker-compose up,最好先進(jìn)行清除構(gòu)建的緩存
docker-compose down
總結(jié)
作為程序員第 128 篇文章,每次寫一句歌詞記錄一下,看看人生有幾首歌的時(shí)間,wahahaha ...
