Docker Compose 部署服務

[toc]php

Docker Compose 部署服務

需求分析:

假如如今咱們手裏有不少容器,每一個容器對應每一個服務,有nginx容器,redis容器,mysql容器等。如今咱們須要批量化的去管理,批量啓動,中止,重啓等操做!

docker compose能夠方便咱們快捷高效地管理容器的啓動、中止、重啓等操做,它相似於linux下的shell腳本,基於yaml語法,在該文件裏咱們能夠描述應用的架構,好比用什麼鏡像、數據卷、網絡模式、監聽端口等信息。咱們能夠在一個compose文件中定義一個多容器的應用(好比jumpserver),而後經過該compose來啓動這個應用。

安裝compose方法以下

下載的文件放在/usr/local/bin/下方便啓動使用html

curl -L https://github.com/docker/compose/releases/download/1.17.0-rc1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod 755 !$

docker-compose version 查看版本信息

Compose區分Version 1和Version 2(Compose 1.6.0+,Docker Engine 1.10.0+)。

Version 2支持更多的指令。Version 1沒有聲明版本默認是"version 1"。Version 1未來會被棄用。

[root@xavi ~]# docker-compose version
-bash: /usr/local/bin/docker-compose: 權限不夠
[root@xavi ~]# chmod 777 /usr/local/bin/docker-compose
[root@xavi ~]# docker-compose version
docker-compose version 1.17.0-rc1, build a0f95af
docker-py version: 2.5.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t  3 May 2016

定義一個docker compose 管理器

[root@xavi ~]# vim docker-compose.yml

version: "2"
services:
  app1:
    image: centos6_x64
    ports:
      - "8080:80"
    networks:
      - "net1"
    volumes: //數據卷
      - /data/:/data
  app2:
    image: centos_nginx_n
    networks:
      - "net2"
    volumes:
      - /data/:/data1
    entrypoint: tail -f /etc/passwd
networks:
  net1:
    driver: bridge
  net2:
    driver: bridge

詳解:mysql

version: "2"    //使用2版本
services:       //相關容器或者鏡像操做
  app1:         //app1對應的是容器1的信息
    image: centos     //images的名字,必須是已經存在的鏡像
    ports:          //映射端口
      - "8080:80"       //映射宿主機8080對應容器的80端口
    networks:       //網絡(默認是bridge模式)
      - "net1"      //下面定義的net1(要是須要使用pipwork怎麼辦? 定義none便可)
    volumes:        //-v的參數指定
      - /data/:/data        //目錄映射,本地的data目錄和容器的目錄映射
  app2:         //定義第2個容器信息
    image: centos_nginx //docker images中已經存在的images
    networks:
      - "net2"
    volumes:
      - /data/:/data1
    entrypoint: tail -f /etc/passwd     //仍是老問題BUG 爲了避免讓執行後關閉,咱們使用這條命令
networks:
  net1:     //如上定義的
    driver: bridge      //定義網絡模式
  net2:
    driver: bridge

檢查測試:啓動容器linux

[root@xavi ~]# docker-compose up -d
Creating network "root_net2" with driver "bridge"
Creating network "root_net1" with driver "bridge"
Pulling app2 (centos_nginx_n:latest)...
ERROR: pull access denied for centos_nginx_n, repository does not exist or may require 'docker login'

報錯,鏡像不存在,修改元編輯文件nginx

mark

[root@xavi ~]# docker-compose up -d
Creating root_app2_1 ... 
Creating root_app1_1 ... 
Creating root_app2_1
Creating root_app1_1 ... done

查看docker-compose 幫助

docker-compose --help

mark

關於docker-compose語法的參考文檔 http://www.web3.xin/index/article/182.htmlgit

[root@xavi ~]# docker-compose ps
   Name             Command         State    Ports 
---------------------------------------------------
root_app1_1   /bin/bash             Exit 0         
root_app2_1   tail -f /etc/passwd   Up       80/tcp

定義一個docker compose 管理器,也就是編輯yml文件,
能夠把LNMP的服務nginx,php,mysql分三個容器出來,github

mark

mark

nginx下的links:作了別名,方便訪問phpweb

mark

mark

相關文章
相關標籤/搜索