1、Docker Compose 概述
Compose是一個用於定義和運行多容器Docker應用程序的工具。使用Compose,您可以使用Compose文件來配置應用程序的服務。然后,使用單個命令,您可以從配置中創建並啟動所有服務。
Compose非常適合開發,測試和登台環境以及CI工作流程。
(1)官方文檔
(2)使用Compose基本上是一個三步過程
- 定義您的應用程序環境,Dockerfile以便可以在任何地方進行復制。
- 定義構成應用程序的服務,docker-compose.yml以便它們可以在隔離環境中一起運行。
- 最后,運行docker-compose up和Compose將啟動並運行整個應用程序。
(3)一個 docker-compose.yml 文件案例:
version: '2' services: web: build: . ports: - "5000:5000" volumes: - .:/code redis: image: redis
有關Compose文件的詳細信息,請參閱 Compose文件參考。
(4)Compose具有管理應用程序整個生命周期的命令:
- 啟動,停止和重建服務
- 查看正在運行的服務的狀態
- 流式傳輸運行服務的日志輸出
- 在服務上運行一次性命令
2、Docker Compose 安裝
2.1 安裝條件
(1)前提
Docker Compose 依靠Docker Engine 進行任何有意義的工作,因此請確保您已在本地或遠程安裝Docker Engine,具體取決於您的設置。
要以非root用戶身份運行Compose,請參閱以非root用戶身份管理Docker。
(2)安裝系統(主要講linux、pip安裝)
- Linux
- Mac
- Windows
- 備用安裝選項(使用pip安裝/安裝為容器)
2.2 在Linux系統上安裝Compose
(1)下載安裝
在gitlab https://github.com/docker/compose/releases 上查詢適合自己的版本
我這里下載的是1.23.2 版本
$ sudo curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
(2)添加執行權限
$ chmod +x /usr/local/bin/docker-compose
(3)安裝完成,查詢版本
$ docker-compose --version docker-compose version 1.23.2, build 1110ad01
2.2 Docker Compose 升級
如果從Compose 1.2或更早版本升級,請在升級Compose后刪除或遷移現有容器。這是因為,從版本1.3開始,Compose使用Docker標簽來跟蹤容器,並且需要重新創建容器以添加標簽。
如果Compose檢測到沒有標簽創建的容器,它將拒絕運行,因此您最終不會使用兩組。如果要繼續使用現有容器(例如,因為它們具有要保留的數據卷),可以使用Compose 1.5.x使用以下命令遷移它們:
# docker-compose migrate-to-labels
或者,如果您不擔心保留它們,可以將它們刪除。撰寫只是創建新的。
# docker container rm -f -v myapp_web_1 myapp_db_1 ...
2.3 Docker Compose 卸載
正常系統安裝卸載:
# sudo rm /usr/local/bin/docker-compose
pip安裝卸載:
# pip uninstall docker-compose
單機編排之Docker Compose
環境准備:
A主機:192.168.7.100
B主機:192.168.7.102
C主機:192.168.7.103
1、安裝python環境、pip命令以及docker-compose包
# yum install python-pip -y # pip install --upgrade-pip # pip install docker-compose
2、在C主機啟動harbor服務,然后創建一個項目:linux(harbor安裝過程見https://www.cnblogs.com/struggle-1216/p/12197845.html)
[root@openstack harbor]# docker-compose start Starting log ... done Starting registry ... done Starting registryctl ... done Starting postgresql ... done Starting adminserver ... done Starting core ... done Starting portal ... done Starting redis ... done Starting jobservice ... done Starting proxy ... done
在配置文件中修改文件,作為開機啟動
[root@openstack harbor]# pwd /usr/local/src/harbor [root@openstack harbor]# vim /etc/rc.d/rc.local #修改rc.local配置文件 cd /usr/local/src/harbor && docker-compose start [root@openstack harbor]# chmod +x /etc/rc.d/rc.local #加上執行權限
2、在A主機將之前創建的haproxy鏡像打標簽並傳到harbor上。
[root@centos-7 src]# docker tag centos-haproxy:v1.8.17 192.168.7.103/linux/centos-haproxy:v1.8.17 #給haproxy打標簽 [root@centos-7 src]# docker login 192.168.7.103 #登陸harbor服務 Username: admin Password: [root@centos-7 src]# docker push 192.168.7.103/linux/centos-haproxy:v1.8.17 #將haproxy上傳到harbor上
基於docker-compose搭建wordpress
1、創建compose.yml文件
1、在指定的目錄下創建compose.yml文件
[root@dockerwordpress]#cat docker-compose.yml version: '3.3' services: wordpress: depends_on: - db image: wordpress:latest volumes: - wordpress_files:/var/www/html ports: - "8080:80" # 指定宿主機的端口號,左邊時宿主機的暴露端口號,右邊是容器暴露端口號 restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_NAME: wpdb # 指定數據庫名稱 WORDPRESS_DB_USER: wpuser # 指定wordpass名稱 WORDPRESS_DB_PASSWORD: wppass # 指定wordpass名稱 db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: centos # 指定數據庫密碼 MYSQL_DATABASE: wpdb # 指定數據庫名稱,與上面一致 MYSQL_USER: wpuser # 與上面的wordpass名稱一致 MYSQL_PASSWORD: wppass # 與上面指定名稱一致 volumes: wordpress_files: db_data:
2、拉取數據庫和wordpass鏡像
# docker pull wordpress # docker pull mysql:5.7
3、啟動創建的wordpass
[root@dockerwordpress]#docker-compose up -d # 第一次啟動使用up選項,-d是在后台啟動容器 Creating network "wordpress_default" with the default driver Creating volume "wordpress_wordpress_files" with default driver Creating wordpress_db_1 ... done Creating wordpress_db_1 ... Creating wordpress_wordpress_1 ... done
4、在網頁上訪問查看效果
1、訪問192.168.7.101:8080的URL,此時就會就會訪問wordpress