簡介:html
Docker Compose是一個用來定義和運行復雜應用的Docker工具。一個使用Docker容器的應用,一般由多個容器組成。使用Docker Compose再也不須要使用shell腳原本啓動容器。
Compose 經過一個配置文件來管理多個Docker容器,在配置文件中,全部的容器經過services來定義,而後使用docker-compose腳原本啓動,中止和重啓應用,和應用中的服務以及全部依賴服務的容器,很是適合組合使用多個容器進行開發的場景。mysql
Docker與Compose的兼容性:git
compose文件格式版本 docker版本 3.7 18.06.0+ 3.6 18.02.0+ 3.5 17.12.0+ 3.4 17.09.0+ 3.3 17.06.0+ 3.2 17.04.0+ 3.1 1.13.1+ 3.0 1.13.0+ 2.3 17.06.0+ 2.2 1.13.0+ 2.1 1.12.0+ 2.0 1.10.0+ 1.0 1.9.1.+
安裝:github
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
查看:web
[root@localhost bin]# docker-compose --version docker-compose version 1.22.0, build f46880fe
compose命令選項:sql
-f, --file FILE 指定使用的 Compose 模板文件,默認爲 docker-compose.yml ,能夠屢次指定。 -p, --project-name NAME 指定項目名稱,默認將使用所在目錄名稱做爲項目名。 --x-networking 使用 Docker 的可拔插網絡後端特性 --x-network-driver DRIVER 指定網絡後端的驅動,默認爲 bridge --verbose 輸出更多調試信息。 -v, --version 打印版本並退出。
compose命令:docker
build 構建或重建服務 help 命令幫助 kill 殺掉容器 logs 顯示容器的輸出內容 port 打印綁定的開放端口 ps 顯示容器 pull 拉取服務鏡像 restart 重啓服務 rm 刪除中止的容器 run 運行一個一次性命令 scale 設置服務的容器數目 start 開啓服務 stop 中止服務 up 建立並啓動容器
Code:shell
wordpress.yml後端
version: '3' services: web: image: wordpress:4 environment: - WORDPRESS_DB_PASSWORD=password - WORDPRESS_AUTH_KEY=changeme - WORDPRESS_SECURE_AUTH_KEY=changeme - WORDPRESS_LOGGED_IN_KEY=changeme - WORDPRESS_NONCE_KEY=changeme - WORDPRESS_AUTH_SALT=changeme - WORDPRESS_SECURE_AUTH_SALT=changeme - WORDPRESS_LOGGED_IN_SALT=changeme - WORDPRESS_NONCE_SALT=changeme - WORDPRESS_NONCE_AA=changeme ports: - 80:80 depends_on: - mysql deploy: replicas: 3 restart_policy: condition: on-failure mysql: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=password deploy: restart_policy: condition: on-failure
wordpress.yml 定義了包含兩個服務的Wordpress應用服務器
web服務:部署3個實例的wordpress:4容器
mysql服務:部署1個實例的mysql:5.7容器
注意:
restart_policy:定義服務的重啓條件 (v1/v2中restart指令再也不支持)
deploy與depends_on不要搞混,一個配置,一個依賴。
命令:
使用docker-compose構建並運行應用:
# 如果要後臺運行: $ docker-compose up -d $ docker-compose up # 若不使用默認的docker-compose.yml 文件名: $ docker-compose -f server.yml up -d
中止刪除容器:
#必須跟docker-compose.yml的文件路徑中執行命令 docker-compose stop
#必須跟docker-compose.yml文件路徑中執行命令 docker-compose rm
設置服務容器數量:
docker-compose scale mysql=2
總結:
不要把 docker 當作數據容器來使用,數據必定要用 volumes 放在容器外面 不要把 docker-compose 文件暴露給別人, 由於上面有你的服務器信息 多用 docker-compose 的命令去操做, 不要用 docker 手動命令&docker-compose 去同時操做 寫一個腳本類的東西,自動備份docker 映射出來的數據。 不要把全部服務都放在一個 docker 容器裏面
參考:
https://docs.docker.com/compose/install/#install-compose
http://www.widuu.com/docker/compose/install.html
http://www.javashuo.com/article/p-psjeaiou-bb.html