成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Docker Compose 1.18.0 之服務(wù)編排詳解

Seay / 2032人閱讀

摘要:新建一個你能記住的目錄,這個目錄是應(yīng)用鏡像的上下文,該目錄用于存放構(gòu)建該鏡像的資源在這個目錄里面將會新建一個文件進(jìn)入目錄創(chuàng)建一個文件,將啟動您的博客和一個多帶帶的實例并掛載數(shù)據(jù)持久化到宿主機(jī)內(nèi)容如下指定服務(wù)的鏡像名稱或鏡像。

一個使用Docker容器的應(yīng)用,通常由多個容器組成。使用Docker Compose,不再需要使用shell腳本來啟動容器。在配置文件中,所有的容器通過services來定義,然后使用docker-compose腳本來啟動,停止和重啟應(yīng)用,和應(yīng)用中的服務(wù)以及所有依賴服務(wù)的容器
Compose 通過一個配置文件來管理多個Docker容器,非常適合組合使用多個容器進(jìn)行開發(fā)的場景。

服務(wù)編排工具使得Docker應(yīng)用管理更為方便快捷。

Docker Compose網(wǎng)站:https://docs.docker.com/compose

使用Compose基本上是三個步驟:

1.定義Dockerfile

2.編寫docker-compose.yml

3.最后運(yùn)行 docker-compose up 啟動服務(wù)

系統(tǒng)環(huán)境

Ubuntu 17.04 x64
Docker CE: 17.12.0-ce
Docker Compose: 1.18.0

參考-https://docs.docker.com/compose/install/#prerequisites

在Linux上,您可以從GitHub上的Compose存儲庫版本頁面下載Docker Compose 最新二進(jìn)制文件

Compose 安裝

運(yùn)行此命令下載最新版本的Docker Compose

$ curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

對二進(jìn)制文件應(yīng)用可執(zhí)行權(quán)限

$ chmod +x /usr/local/bin/docker-compose

驗證

$ docker-compose --version
docker-compose version 1.16.1, build 6d1ac21

卸載

要卸載 Docker Compose,如果使用 curl 以下安裝:

$ rm /usr/local/bin/docker-compose
入門示例 WordPress

使用Docker Compose 可以輕松地在Docker容器中,構(gòu)建獨(dú)立環(huán)境運(yùn)行的WordPress,在開始之前必須安裝Docker Compose

編寫配置

1.創(chuàng)建一個空的項目目錄。

新建一個你能記住的目錄,這個目錄是應(yīng)用鏡像的上下文,該目錄用于存放構(gòu)建該鏡像的資源

在這個目錄里面將會新建一個docker-compose.yml文件

$ mkdir my_wordpress

2.進(jìn)入my_wordpress 目錄

$ cd my_wordpress

3.創(chuàng)建一個docker-compose.yml文件,將啟動您的 WordPress博客和一個多帶帶的MySQL實例并掛載數(shù)據(jù)持久化到宿主機(jī)

$ touch docker-compose.yml
$ vi docker-compose.yml

內(nèi)容如下

version: "3"

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

image

image: 指定服務(wù)的鏡像名稱或鏡像 ID image: mysql,image: wordpress:latest。如果鏡像在本地不存在,Compose 將會嘗試?yán)∵@個鏡像。

所以我們不需要先拉取鏡像

volumes

- db_data:MySQL實例掛載數(shù)據(jù)持久化到宿主機(jī)/var/lib/docker/volumes/mywordpress_db_data/_data

PS

$ docker run -v /var/lib/mysql --name mywordpress_db_data -e MYSQL_ROOT_PASSWORD=wordpress -d mysql
$ docker run --name some-wordpress --link mywordpress_db_data:mysql -p 8002:80 -d wordpress

以上命令的意思是新建mywordpress_db_data some-wordpress容器。等同于:docker-compose.yml 內(nèi)容

啟動服務(wù)
root@souyunku:/opt/my_wordpress# docker-compose up -d

如果看到如下信息就證明沒毛病

Pulling db (mysql:5.7)...
5.7: Pulling from library/mysql
f49cf87b52c1: Pull complete
78032de49d65: Pull complete
837546b20bc4: Pull complete
9b8316af6cc6: Pull complete
1056cf29b9f1: Pull complete
86f3913b029a: Pull complete
f98eea8321ca: Pull complete
3a8e3ebdeaf5: Pull complete
4be06ac1c51e: Pull complete
920c7ffb7747: Pull complete
Digest: sha256:7cdb08f30a54d109ffffded59525937592cb6852ff635a546626a8960d9ec34c30
Status: Downloaded newer image for mysql:5.7
Pulling wordpress (wordpress:latest)...
latest: Pulling from library/wordpress
e7bb522d92ff: Pull complete
75651f247827: Pull complete
dbcf8fd0150f: Pull complete
de80263f26f0: Pull complete
65be8ad4c5fd: Pull complete
239d5fed0dda: Pull complete
5ab39b683a9f: Pull complete
4a3f54f2d93a: Pull complete
28c970ad99e9: Pull complete
5d1e20c7c396: Pull complete
05f877a23903: Pull complete
e0a5c61bdaa6: Pull complete
d27d2d70a072: Pull complete
ba039fef4b7e: Pull complete
fd026e22f5c3: Pull complete
a523c6d55ab4: Pull complete
025590874132: Pull complete
d1f0ca983d7b: Pull complete
40d597c8be8b: Pull complete
Digest: sha256:573257b41e1c3554cfe3a856d3c329030a821194172e2aeb1d3a7f5dd896ccb4
Creating mywordpress_db_1        ... done
Creating mywordpress_db_1        ... 
Creating mywordpress_wordpress_1 ... done
root@souyunku:/opt/my_wordpress#
查看容器
root@souyunku:/opt/my_wordpress# docker container ps -a
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS                    NAMES
d715012934dc        wordpress:latest                   "docker-entrypoint.s…"   2 hours ago         Up 19 seconds       0.0.0.0:8000->80/tcp     mywordpress_wordpress_1
ce956cf8d74b        mysql:5.7                          "docker-entrypoint.s…"   2 hours ago         Up 2 hours          3306/tcp                 mywordpress_db_1
查看鏡像
root@souyunku:/opt/my_wordpress# docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
mysql                              5.7                 f008d8ff927d        2 days ago          409MB
wordpress                          latest              28084cde273b        9 days ago          408MB
root@souyunku:/opt/my_wordpress#
訪問服務(wù)

編寫參考

每個docker-compose.yml必須定義image或者build中的一個,其它的是可選的。

image

image 指定鏡像tag或者ID。示例:

image: mysql
image: redis
image: ubuntu:14.04
image: tutum/influxdb
image: example-registry.com:4000/postgresql
image: a4bc65fd

注意,在version 1里同時使用image和build是不允許的,version 2則可以,如果同時指定了兩者,會將build出來的鏡像打上名為image標(biāo)簽。

build

用來指定一個包含Dockerfile文件的路徑。一般是當(dāng)前目錄.build并生成一個隨機(jī)命名的鏡像。

實例

├── app
│?? ├── Dockerfile
│?? └── docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar
├── docker-compose.yml

Dockerfile 內(nèi)容

root@souyunku:/opt/app# cat Dockerfile 
FROM java:8
VOLUME /tmp
ADD docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c "touch /app.jar"
EXPOSE 9000

docker-compose.yml 內(nèi)容

root@souyunku:/opt# cat docker-compose.yml 
app:
  build: ./app
  ports:
    - "9090:80"
  expose:
    - 80

./app 是放Dockerfile 的路徑

ports 用于暴露端口 同docker run -p

command

用來覆蓋缺省命令。示例:

command: bundle exec thin -p 3000

command也支持?jǐn)?shù)組形式

command: [bundle, exec, thin, -p, 3000]
links

用于鏈接另一容器服務(wù),如需要使用到另一容器的mysql服務(wù)。可以給出服務(wù)名和別名;也可以僅給出服務(wù)名,這樣別名將和服務(wù)名相同。

docker run --link。示例:

links:
 - db
 - db:mysql
 - redis

使用了別名將自動會在容器的/etc/hosts文件里創(chuàng)建相應(yīng)記錄:

172.17.2.186  db
172.17.2.186  mysql
172.17.2.187  redis

所以我們在容器里就可以直接使用別名作為服務(wù)的主機(jī)名。

ports

用于暴露端口。同docker run -p

示例:

ports:
 - "3000"
 - "8000:8000"
 - "49100:22"
 - "127.0.0.1:8001:8001"
expose

expose提供container之間的端口訪問,不會暴露給主機(jī)使用。同docker run --expose

expose:
 - "3000"
 - "8000"
volumes

掛載數(shù)據(jù)卷。同docker run -v

示例:

volumes:
 - /var/lib/mysql
 - cache/:/tmp/cache
 - ~/configs:/etc/configs/:ro

進(jìn)入MySQL容器

查看容器ID

root@souyunku:# docker container ps -a
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS                    NAMES
559e49f8dc01        wordpress:latest                   "docker-entrypoint.s…"   18 minutes ago      Up 18 minutes       0.0.0.0:8000->80/tcp     mywordpress_wordpress_1
3c207b3e16bd        mysql:5.7                          "docker-entrypoint.s…"   18 minutes ago      Up 18 minutes       3306/tcp                 mywordpress_db_1

通過容器ID進(jìn)入MySQL容器

root@souyunku:# docker exec -it 3c207b3e16bd bash

進(jìn)入MySQL容器的存儲目錄

root@3c207b3e16bd:/# cd var/lib/mysql
root@3c207b3e16bd:/var/lib/mysql# ls
auto.cnf    ca.pem         client-key.pem  ib_logfile0  ibdata1  mysql           private_key.pem    server-cert.pem  sys       wordpress
ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile1  ibtmp1   performance_schema  public_key.pem    server-key.pem     test.txt
root@3c207b3e16bd:/var/lib/mysql# cat test.txt
1234

新建一個文本,用于測試MySQL容器的掛載目錄,有沒有同步到宿主機(jī)

root@3c207b3e16bd:/var/lib/mysql# touch test.txt
root@3c207b3e16bd:/var/lib/mysql# echo "1234" >test.txt 

宿主機(jī)查看容器掛載是否同步

root@souyunku:/var/lib/docker/volumes/mywordpress_db_data/_data# pwd
/var/lib/docker/volumes/mywordpress_db_data/_data

root@souyunku:/var/lib/docker/volumes/mywordpress_db_data/_data# ls
auto.cnf    ca.pem           client-key.pem  ibdata1      ib_logfile1  mysql               private_key.pem  server-cert.pem  sys       wordpress
ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile0  ibtmp1       performance_schema  public_key.pem   server-key.pem   test.txt

root@souyunku:/var/lib/docker/volumes/mywordpress_db_data/_data# cat test.txt 
1234
root@souyunku:/var/lib/docker/volumes/mywordpress_db_data/_data#
volumes_from

掛載數(shù)據(jù)卷容器,掛載是容器。同docker run --volumes-from。示例:

volumes_from:
 - service_name
 - service_name:ro
 - container:container_name
 - container:container_name:rw

container:container_name格式僅支持version 2。

environment

添加環(huán)境變量。同docker run -e。可以是數(shù)組或者字典格式:

environment:
  RACK_ENV: development
  SESSION_SECRET:

environment:
  - RACK_ENV=development
  - SESSION_SECRET
depends_on

用于指定服務(wù)依賴,一般是mysql、redis等。
指定了依賴,將會優(yōu)先于服務(wù)創(chuàng)建并啟動依賴。

links也可以指定依賴。

external_links

鏈接搭配docker-compose.yml文件或者Compose之外定義的服務(wù),通常是提供共享或公共服務(wù)。格式與links相似:

external_links:
 - redis_1
 - project_db_1:mysql
 - project_db_1:postgresql

注意,external_links鏈接的服務(wù)與當(dāng)前服務(wù)必須是同一個網(wǎng)絡(luò)環(huán)境。

extra_hosts

添加主機(jī)名映射。

extra_hosts:
 - "somehost:162.242.195.82"
 - "otherhost:50.31.209.229"

將會在/etc/hosts創(chuàng)建記錄:

162.242.195.82  somehost
50.31.209.229   otherhost
extends

繼承自當(dāng)前yml文件或者其它文件中定義的服務(wù),可以選擇性的覆蓋原有配置。

extends:
  file: common.yml
  service: webapp

service必須有,file可選。service是需要繼承的服務(wù),例如web、database

net

設(shè)置網(wǎng)絡(luò)模式。同docker--net參數(shù)。

net: "bridge"
net: "none"
net: "container:[name or id]"
net: "host"
dns

自定義dns服務(wù)器。

dns: 8.8.8.8
dns:
  - 8.8.8.8
  - 9.9.9.9
更多

cpu_shares, cpu_quota, cpuset, domainname, hostname, ipc, mac_address, mem_limit, memswap_limit, privileged, read_only, restart, shm_size, stdin_open, tty, user, working_dir

這些命令都是單個值,含義請參考

編寫 docker-compose 請參考官方文檔

Compose file version 3

https://docs.docker.com/compose/compose-file/

Compose file version 2

https://docs.docker.com/compose/compose-file/compose-file-v2/

Compose file version 1

https://docs.docker.com/compose/compose-file/compose-file-v1/

參考

https://docs.docker.com/compose/overview/

https://docs.docker.com/compose/

Contact

作者:鵬磊

出處:http://www.ymq.io/2018/01/17/Docker-Compose-example

Email:[email protected]

版權(quán)歸作者所有,轉(zhuǎn)載請注明出處

Wechat:關(guān)注公眾號,"搜云庫",專注于開發(fā)技術(shù)的研究與知識分享

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27206.html

相關(guān)文章

  • docker 編排服務(wù).md

    摘要:參考周立與微服務(wù)實戰(zhàn)安裝官方文檔安裝自動補(bǔ)全工具編寫表示該文件使用的是指定服務(wù)名稱指定服務(wù)所使用的鏡像啟動清空緩存,強(qiáng)制重新構(gòu)建并啟動停止重啟一個服務(wù)服務(wù)名稱來自于里的定義 參考 周立 《Spring cloud 與Docker 微服務(wù)實戰(zhàn)》 安裝compose 官方文檔 sudo curl -L https://github.com/docker/compose/releases/d...

    yck 評論0 收藏0
  • 墻裂推薦:搜云庫技術(shù)團(tuán)隊,面試必備的技術(shù)干貨

    摘要:今天整理了一下近大半年以來的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫過了,這個記錄的過程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 今天整理了一下近大半年以來的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫過了,這個記錄的過程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 面試必備 面試必備:深入Spring MVC DispatchServlet 源碼...

    SegmentFault 評論0 收藏0
  • 墻裂推薦:搜云庫技術(shù)團(tuán)隊,面試必備的技術(shù)干貨

    摘要:今天整理了一下近大半年以來的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫過了,這個記錄的過程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 今天整理了一下近大半年以來的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫過了,這個記錄的過程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 面試必備 面試必備:深入Spring MVC DispatchServlet 源碼...

    Neilyo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<