最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年07月06日 13:41:39   作者:飛鴻影~  
Compose是Docker的服務(wù)編排工具,主要用來構(gòu)建基于Docker的復(fù)雜應(yīng)用,Compose 通過一個配置文件來管理多個Docker容器,非常適合組合使用多個容器進(jìn)行開發(fā)的場景。興趣的小伙伴們可以參考一下

Compose是Docker的服務(wù)編排工具,主要用來構(gòu)建基于Docker的復(fù)雜應(yīng)用,Compose 通過一個配置文件來管理多個Docker容器,非常適合組合使用多個容器進(jìn)行開發(fā)的場景。

說明:Compose是Fig的升級版,F(xiàn)ig已經(jīng)不再維護(hù)。Compose向下兼容Fig,所有fig.yml只需要更名為docker-compose.yml即可被Compose使用。

服務(wù)編排工具使得Docker應(yīng)用管理更為方便快捷。 Compose網(wǎng)站:https://docs.docker.com/compose/

安裝Compose:

# 方法一:
$ curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

# Linux下等效于
$ curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose; chmod +x /usr/local/bin/docker-compose

# 方法二:使用pip安裝,版本可能比較舊
$ yum install python-pip python-dev
$ pip install docker-compose

# 方法三:作為容器安裝
$ curl -L https://github.com/docker/compose/releases/download/1.8.0/run.sh > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

# 方法四:離線安裝
# 下載[docker-compose-Linux-x86_64](https://github.com/docker/compose/releases/download/1.8.1/docker-compose-Linux-x86_64),然后重新命名添加可執(zhí)行權(quán)限即可:
$ mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose;
$ chmod +x /usr/local/bin/docker-compose
# 百度云地址: http://pan.baidu.com/s/1slEOIC1 密碼: qmca
# docker官方離線地址:https://dl.bintray.com/docker-compose/master/

安裝完成后可以查看版本:

# docker-compose --version
docker-compose 1.8.1

升級

如果你使用的是 Compose 1.2或者早期版本,當(dāng)你升級完成后,你需要刪除或者遷移你現(xiàn)有的容器。這是因為,1.3版本, Composer 使用 Docker 標(biāo)簽來對容器進(jìn)行檢測,所以它們需要重新創(chuàng)建索引標(biāo)記。

卸載

$ rm /usr/local/bin/docker-compose

# 卸載使用pip安裝的compose
$ pip uninstall docker-compose

Compose區(qū)分Version 1和Version 2(Compose 1.6.0+,Docker Engine 1.10.0+)。Version 2支持更多的指令。Version 1沒有聲明版本默認(rèn)是"version 1"。Version 1將來會被棄用。

版本1指的是忽略version關(guān)鍵字的版本;版本2必須在行首添加version: '2'。

入門示例

一般步驟

1、定義Dockerfile,方便遷移到任何地方;
2、編寫docker-compose.yml文件;
3、運行docker-compose up啟動服務(wù)

示例

準(zhǔn)備工作:提前下載好鏡像:

docker pull mysql
docker pull wordpress

需要新建一個空白目錄,例如wptest。新建一個docker-compose.yml

version: '2'
services:
  web: 
   image: wordpress:latest 
   links: 
    - db
   ports: 
    - "8002:80"
   environment:
    WORDPRESS_DB_HOST: db:3306
    WORDPRESS_DB_PASSWORD: 123456
  db: 
   image: mysql 
   environment: 
    - MYSQL_ROOT_PASSWORD=123456

以上命令的意思是新建db和wordpress容器。等同于:

$ docker run --name db -e MYSQL_ROOT_PASSWORD=123456 -d mysql
$ docker run --name some-wordpress --link db:mysql -p 8002:80 -d wordpress



注意,如果你是直接從fig遷移過來的,且weblinks- db:mysql,這里會提示沒有給wordpress設(shè)置環(huán)境變量,這里需要添加環(huán)境變量WORDPRESS_DB_HOSTWORDPRESS_DB_PASSWORD。

好,我們啟動應(yīng)用:

# docker-compose up
Creating wptest_db_1...
Creating wptest_wordpress_1...
Attaching to wptest_db_1, wptest_wordpress_1
wordpress_1 | Complete! WordPress has been successfully copied to /var/www/html

就成功了。瀏覽器訪問 http://localhost:8002(或 http://host-ip:8002)即可。

默認(rèn)是前臺運行并打印日志到控制臺。如果想后臺運行,可以:

docker-compose up -d

服務(wù)后臺后,可以使用下列命令查看狀態(tài):

# docker-compose ps
    Name           Command        State     Ports     
-----------------------------------------------------------------------------------
figtest_db_1     docker-entrypoint.sh mysqld   Up   3306/tcp       
figtest_wordpress_1  docker-entrypoint.sh apach ...  Up   0.0.0.0:8002->80/tcp

# docker-compose logs
Attaching to wptest_wordpress_1, wptest_db_1
db_1    | 2016-10-4T14:38:46.98030Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
db_1    | 2016-10-4T14:38:46.99974Z 0 [Note] mysqld (mysqld 5.7.15) starting as process 1 ...
db_1    | 2016-10-4T14:38:46.27191Z 0 [Note] InnoDB: PUNCH HOLE support available

停止服務(wù):

# docker-compose stop
Stopping wptest_wordpress_1...
Stopping wptest_db_1...

重新啟動服務(wù):

docker-compose restart

docker-compose.yml參考

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

image

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

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

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

build

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

注意,在version 1bulid僅支持值為字符串。version 2里支持對象格式。

build: ./dir

build:
 context: ./dir
 dockerfile: Dockerfile-alternate
 args:
  buildno: 1

context為路徑,dockerfile為需要替換默認(rèn)docker-compose的文件名,args為構(gòu)建(build)過程中的環(huán)境變量,用于替換Dockerfile里定義的ARG參數(shù),容器中不可用。示例:

Dockerfile:

ARG buildno
ARG password

RUN echo "Build number: $buildno"
RUN script-requiring-password.sh "$password"

docker-compose.yml:

build:
 context: .
 args:
  buildno: 1
  password: secret

build:
 context: .
 args:
  - buildno=1
  - password=secret

command

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

command: bundle exec thin -p 3000

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

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

links

用于鏈接另一容器服務(wù),如需要使用到另一容器的mysql服務(wù)??梢越o出服務(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

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 run。

cpu_shares: 73
cpu_quota: 50000
cpuset: 0,1

user: postgresql
working_dir: /code

domainname: foo.com
hostname: foo
ipc: host
mac_address: 02:42:ac:11:65:43

mem_limit: 1000000000
mem_limit: 128M
memswap_limit: 2000000000
privileged: true

restart: always

read_only: true
shm_size: 64M
stdin_open: true
tty: true

命令行參考

$ docker-compose
Define and run multi-container applications with Docker.

Usage:
 docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
 docker-compose -h|--help

Options:
 -f, --file FILE       Specify an alternate compose file (default: docker-compose.yml)
 -p, --project-name NAME   Specify an alternate project name (default: directory name)
 --verbose          Show more output
 -v, --version        Print version and exit
 -H, --host HOST       Daemon socket to connect to

 --tls            Use TLS; implied by --tlsverify
 --tlscacert CA_PATH     Trust certs signed only by this CA
 --tlscert CLIENT_CERT_PATH Path to TLS certificate file
 --tlskey TLS_KEY_PATH    Path to TLS key file
 --tlsverify         Use TLS and verify the remote
 --skip-hostname-check    Don't check the daemon's hostname against the name specified
               in the client certificate (for example if your docker host
               is an IP address)

Commands:
 build       Build or rebuild services
 bundle       Generate a Docker bundle from the Compose file
 config       Validate and view the compose file
 create       Create services
 down        Stop and remove containers, networks, images, and volumes
 events       Receive real time events from containers
 exec        Execute a command in a running container
 help        Get help on a command
 kill        Kill containers
 logs        View output from containers
 pause       Pause services
 port        Print the public port for a port binding
 ps         List containers
 pull        Pulls service images
 push        Push service images
 restart      Restart services
 rm         Remove stopped containers
 run        Run a one-off command
 scale       Set number of containers for a service
 start       Start services
 stop        Stop services
 unpause      Unpause services
 up         Create and start containers
 version      Show the Docker-Compose version information

批處理腳本

# 關(guān)閉所有正在運行容器
docker ps | awk '{print $1}' | xargs docker stop

# 刪除所有容器應(yīng)用
docker ps -a | awk '{print $1}' | xargs docker rm
# 或者
docker rm $(docker ps -a -q)

參考:

1、Overview of Docker Compose - Docker
https://docs.docker.com/compose/overview/

2、library/mysql - Docker Hub
https://hub.docker.com/_/mysql/

 3、library/wordpress - Docker Hub
https://hub.docker.com/_/wordpress/

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker中容器數(shù)據(jù)卷volume介紹

    docker中容器數(shù)據(jù)卷volume介紹

    大家好,本篇文章主要講的是docker中容器數(shù)據(jù)卷volume介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Docker每次啟動容器,IP及hosts指定的操作

    Docker每次啟動容器,IP及hosts指定的操作

    這篇文章主要介紹了Docker每次啟動容器,IP及hosts指定的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Docker無法連接到Docker?Hub和鏡像加速器的問題詳解

    Docker無法連接到Docker?Hub和鏡像加速器的問題詳解

    這篇文章主要介紹了Docker容器無法連接到DockerHub或鏡像加速器問題的步驟,包括檢查和更換DNS服務(wù)器、測試網(wǎng)絡(luò)連通性、使用鏡像加速器和檢查防火墻及安全組規(guī)則,通過逐一排查,可以解決大多數(shù)連接問題,需要的朋友可以參考下
    2025-03-03
  • docker部署nginx訪問宿主機(jī)服務(wù)并使用緩存的操作方法

    docker部署nginx訪問宿主機(jī)服務(wù)并使用緩存的操作方法

    這篇文章主要介紹了docker部署nginx訪問宿主機(jī)服務(wù)并使用緩存的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,感興趣的朋友一起看看吧
    2024-04-04
  • docker部署minio并使用springboot連接的操作方法

    docker部署minio并使用springboot連接的操作方法

    這篇文章主要介紹了docker部署minio并使用springboot連接的操作方法,本文以minio為例結(jié)合實例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2023-11-11
  • docker內(nèi)網(wǎng)搭建dns使用域名訪問替代ip:port的操作

    docker內(nèi)網(wǎng)搭建dns使用域名訪問替代ip:port的操作

    這篇文章主要介紹了docker內(nèi)網(wǎng)搭建dns使用域名訪問替代ip:port的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 詳解docker中使用systemctl啟動服務(wù)報錯的解決辦法

    詳解docker中使用systemctl啟動服務(wù)報錯的解決辦法

    這篇文章主要介紹了詳解docker中使用systemctl啟動服務(wù)報錯的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Docker 中快速安裝tensorflow環(huán)境的方法步驟

    Docker 中快速安裝tensorflow環(huán)境的方法步驟

    這篇文章主要介紹了Docker 中快速安裝tensorflow環(huán)境的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • docker之安裝mysql教程

    docker之安裝mysql教程

    這篇文章主要介紹了docker之安裝mysql教程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Docker 搭建 Tomcat 運行環(huán)境的方法

    Docker 搭建 Tomcat 運行環(huán)境的方法

    這篇文章主要介紹了Docker 搭建 Tomcat 運行環(huán)境的方法,Docker與虛擬機(jī)及搭建過程,介紹的非常詳細(xì),需要的朋友可以參考下
    2016-10-10

最新評論

南皮县| 遂宁市| 雷州市| 辉县市| 灵寿县| 许昌市| 靖远县| 嘉鱼县| 田东县| 盐边县| 沙湾县| 同仁县| 东乡族自治县| 汤原县| 台湾省| 依安县| 神池县| 满城县| 建阳市| 台北县| 安平县| 临潭县| 孝感市| 买车| 丘北县| 巴塘县| 钟祥市| 夏河县| 清水河县| 无极县| 穆棱市| 措勤县| 定远县| 桃江县| 德格县| 霍城县| 九江县| 禹城市| 犍为县| 隆昌县| 扶沟县|