亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

詳解Docker之Compose服務編排

2024-09-01 13:55:18
字體:
來源:轉載
供稿:網友

Compose是Docker的服務編排工具,主要用來構建基于Docker的復雜應用,Compose 通過一個配置文件來管理多個Docker容器,非常適合組合使用多個容器進行開發的場景。

說明:Compose是Fig的升級版,Fig已經不再維護。Compose向下兼容Fig,所有fig.yml只需要更名為docker-compose.yml即可被Compose使用。

服務編排工具使得Docker應用管理更為方便快捷。 Compose網站: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),然后重新命名添加可執行權限即可:$ 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 --versiondocker-compose 1.8.1

升級

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

卸載

$ rm /usr/local/bin/docker-compose# 卸載使用pip安裝的compose$ pip uninstall docker-compose

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

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

入門示例

一般步驟

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

示例

準備工作:提前下載好鏡像:

docker pull mysqldocker 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設置環境變量,這里需要添加環境變量WORDPRESS_DB_HOSTWORDPRESS_DB_PASSWORD。

好,我們啟動應用:

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

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

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

docker-compose up -d

服務后臺后,可以使用下列命令查看狀態:

# 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 logsAttaching to wptest_wordpress_1, wptest_db_1db_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

停止服務:

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

重新啟動服務:

docker-compose restart

docker-compose.yml參考

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

image

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

image: redisimage: ubuntu:14.04image: tutum/influxdbimage: example-registry.com:4000/postgresqlimage: a4bc65fd

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

build

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

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

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

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

Dockerfile:

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

docker-compose.yml:

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

command

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

command: bundle exec thin -p 3000

command也支持數組形式:

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

links

用于鏈接另一容器服務,如需要使用到另一容器的mysql服務??梢越o出服務名和別名;也可以僅給出服務名,這樣別名將和服務名相同。同docker run --link。示例:

links: - db - db:mysql - redis

使用了別名將自動會在容器的/etc/hosts文件里創建相應記錄:

172.17.2.186 db172.17.2.186 mysql172.17.2.187 redis

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

ports

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

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

expose

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

expose: - "3000" - "8000"

volumes

掛載數據卷。同docker run -v。示例:

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

volumes_from

掛載數據卷容器,掛載是容器。同docker run --volumes-from。示例:

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

container:container_name格式僅支持version 2。

environment

添加環境變量。同docker run -e??梢允菙到M或者字典格式:

environment: RACK_ENV: development SESSION_SECRET:environment: - RACK_ENV=development - SESSION_SECRET

depends_on

用于指定服務依賴,一般是mysql、redis等。

指定了依賴,將會優先于服務創建并啟動依賴。

links也可以指定依賴。

external_links

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

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

注意,external_links鏈接的服務與當前服務必須是同一個網絡環境。

extra_hosts

添加主機名映射。

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

將會在/etc/hosts創建記錄:

162.242.195.82 somehost50.31.209.229  otherhost

extends

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

extends: file: common.yml service: webapp

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

net

設置網絡模式。同docker的--net參數。

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

dns

自定義dns服務器。

dns: 8.8.8.8dns: - 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: 73cpu_quota: 50000cpuset: 0,1user: postgresqlworking_dir: /codedomainname: foo.comhostname: fooipc: hostmac_address: 02:42:ac:11:65:43mem_limit: 1000000000mem_limit: 128Mmemswap_limit: 2000000000privileged: truerestart: alwaysread_only: trueshm_size: 64Mstdin_open: truetty: true

命令行參考

$ docker-composeDefine and run multi-container applications with Docker.Usage: docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker-compose -h|--helpOptions: -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

批處理腳本

# 關閉所有正在運行容器docker ps | awk '{print $1}' | xargs docker stop# 刪除所有容器應用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/

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品av电影| 国产91精品久久久久久久| 2021国产精品视频| 国产精品亚洲аv天堂网| 国产精品观看在线亚洲人成网| 精品久久香蕉国产线看观看亚洲| 国产精品视频在线观看| 欧美另类交人妖| 欧美成人合集magnet| 亚洲一区亚洲二区亚洲三区| 91久久夜色精品国产网站| 亚洲成人久久一区| 欧美成人一区二区三区电影| 北条麻妃99精品青青久久| 成人免费福利视频| 欧美极品美女视频网站在线观看免费| 777午夜精品福利在线观看| 97免费视频在线| 国产91精品青草社区| 国产精品男人的天堂| 日韩中文字幕在线播放| 久青草国产97香蕉在线视频| 国产一区二区黑人欧美xxxx| 国产精品亚洲网站| 欧美午夜视频在线观看| 欧美激情网站在线观看| 欧美天堂在线观看| 在线亚洲国产精品网| 欧美中文字幕第一页| 亚洲视屏在线播放| 日韩欧美在线国产| 久久99精品久久久久久琪琪| 日韩精品极品在线观看播放免费视频| 国产精品户外野外| 精品无人区太爽高潮在线播放| 中文字幕亚洲综合久久筱田步美| 日韩视频中文字幕| 日本久久中文字幕| 国产福利精品av综合导导航| 91色在线视频| 亚洲影视中文字幕| 亚洲午夜精品视频| 欧美激情精品久久久久久黑人| 欧美国产精品人人做人人爱| 91精品成人久久| 欧美最猛性xxxx| 亚洲欧美日韩中文在线| 亚洲欧美一区二区三区情侣bbw| 91精品国产777在线观看| 欧美日韩视频在线| 555www成人网| 色视频www在线播放国产成人| 欧美成人在线免费视频| 欧美成人全部免费| 91探花福利精品国产自产在线| 国产欧美日韩精品在线观看| 亚洲欧美国产制服动漫| 久久久亚洲天堂| 91精品国产91久久久久久吃药| 国产在线精品自拍| 成人在线观看视频网站| 亚洲成人精品视频在线观看| 国产精品一区二区三区成人| 欧美成年人视频网站欧美| 国产成人在线视频| 欧美有码在线观看视频| 中文字幕久热精品视频在线| 九九热r在线视频精品| 久久久精品一区二区| 国产精品露脸av在线| 亚洲www在线观看| 国产亚洲精品久久久久久牛牛| 亚洲第一av网| 久热在线中文字幕色999舞| 国产欧美日韩精品丝袜高跟鞋| 色综合久久88| 亚洲区一区二区| 高清一区二区三区四区五区| 欧美日韩亚洲一区二| 日韩久久免费视频| 国产精品久久二区| 国产成人综合一区二区三区| 亚洲自拍另类欧美丝袜| 亚洲小视频在线观看| 国产精品美乳一区二区免费| 97国产一区二区精品久久呦| 亚洲欧美日韩爽爽影院| 国产精品免费视频久久久| 伊人久久男人天堂| 亚洲人成电影网站色www| 韩国日本不卡在线| 黑人巨大精品欧美一区免费视频| 4438全国成人免费| 国产精品视频资源| 91中文精品字幕在线视频| 91在线色戒在线| 亚洲国产成人精品女人久久久| 日韩av在线导航| 日韩视频免费大全中文字幕| 国产在线播放不卡| 国自产精品手机在线观看视频| 97免费中文视频在线观看| 日韩在线观看视频免费| 亚洲精品国产福利| 久久久久久久久久国产精品| 欧美在线观看www| 亚洲黄色www网站| 国内精品小视频| 自拍偷拍亚洲精品| 日韩电影大全免费观看2023年上| 国产精品男人的天堂| 国产中文欧美精品| 中文字幕在线成人| 日韩av大片在线| 国产九九精品视频| 亚洲人成在线观看网站高清| 亚洲天堂第一页| 亚洲欧美自拍一区| 中文字幕在线精品| 97超视频免费观看| 国产精品91免费在线| 97人人模人人爽人人喊中文字| 少妇高潮 亚洲精品| 国产精品普通话| 欧美成人免费全部| 91精品国产高清久久久久久久久| 欧美精品一区三区| 俺去亚洲欧洲欧美日韩| 高清欧美一区二区三区| 国产亚洲激情在线| 久久在精品线影院精品国产| 国产一区二区三区在线免费观看| 久久视频在线观看免费| 亚洲第一精品电影| 国产精品久久久久久久久久新婚| 久久久久这里只有精品| 国产欧美一区二区三区久久| 亚洲成人网久久久| 中文字幕久久久| 欧美激情va永久在线播放| 国产精品久久久久久久久借妻| 久久这里有精品视频| 久久手机精品视频| 久久久99久久精品女同性| 91成人国产在线观看| 亚洲男人的天堂在线播放| 久久久久久久国产精品视频| 亚洲成人精品av| 国产91精品久久久久久| 性欧美长视频免费观看不卡| 亚洲第一av网| 中文.日本.精品| www欧美日韩| 亚洲色图国产精品| 亚洲男人的天堂在线| 九九视频直播综合网| 国产精品免费一区| 国产一区二区三区精品久久久| 国模视频一区二区| 91av在线不卡| 伊人久久综合97精品| 国产视频精品自拍| 欧美亚洲另类在线| 中文字幕日韩电影|