docker-compose的安裝卸載以及如何使用

一土全、安裝

查看github上的docker-compose發(fā)行版本的地址:
https://github.com/docker/compose/tags
當(dāng)前最新的版本是1.26.2会涎。
安裝的命令如下:

# 1.拉取
curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 2.設(shè)置文件具備執(zhí)行權(quán)限
chmod +x /usr/local/bin/docker-compose

# 3.查看版本信息
docker-compose -version

實例:

[root@localhost ~]# curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   638  100   638    0     0   1714      0 --:--:-- --:--:-- --:--:--  1719
100 11.6M  100 11.6M    0     0  22827      0  0:08:56  0:08:56 --:--:-- 24434
[root@localhost ~]# chmod +x /usr/local/bin/docker-compose
[root@localhost ~]# docker-compose -version
docker-compose version 1.26.2, build eefe0d31

二末秃、卸載

# 二進(jìn)制包方式安裝的,刪除二進(jìn)制文件即可
rm /usr/local/bin/docker-compose

三练慕、基本使用

  1. 查看命令的基本用法
    可以使用docker-compose [命令] --help|-h來實現(xiàn)技掏。
    docker-compose build -h
    
  2. 命令選項如下

    -f项鬼,–file FILE指定使用的Compose模板文件,默認(rèn)為docker-compose.yml鸠真,可以多次指定龄毡。
    -p,–project-name NAME指定項目名稱沦零,默認(rèn)將使用所在目錄名稱作為項目名。
    -x-network-driver 使用Docker的可拔插網(wǎng)絡(luò)后端特性(需要Docker 1.9 及以后版本)
    -x-network-driver DRIVER指定網(wǎng)絡(luò)后端的驅(qū)動序攘,默認(rèn)為bridge(需要Docker 1.9 及以后版本)
    -verbose輸出更多調(diào)試信息
    -v寻拂,–version打印版本并退出

  3. docker-compose常用命令列表
    命令 說明
    build 構(gòu)建項目中的服務(wù)容器
    help 獲得一個命令的幫助
    kill 通過發(fā)送SIGKILL信號來強制停止服務(wù)容器
    con?g 驗證和查看compose文件配置
    create 為服務(wù)創(chuàng)建容器。只是單純的create祭钉,還需要使用start啟動compose
    down 停止并刪除容器,網(wǎng)絡(luò)距境,鏡像和數(shù)據(jù)卷
    exec 在運行的容器中執(zhí)行一個命令
    logs 查看服務(wù)容器的輸出
    pause 暫停一個服務(wù)容器
    port 打印某個容器端口所映射的公共端口
    ps 列出項目中目前的所有容器
    pull 拉取服務(wù)依賴的鏡像
    push 推送服務(wù)鏡像
    restart 重啟項目中的服務(wù)
    rm 刪除所有(停止?fàn)顟B(tài)的)服務(wù)容器
    run 在指定服務(wù)上執(zhí)行一個命令
    scale 設(shè)置指定服務(wù)運行的容器個數(shù)
    start 啟動已經(jīng)存在的服務(wù)容器
    stop 停止已經(jīng)處于運行狀態(tài)的容器垮卓,但不刪除它
    top 顯示運行的進(jìn)程
    unpause 恢復(fù)處于暫停狀態(tài)中的服務(wù)
    up 自動完成包括構(gòu)建鏡像、創(chuàng)建服務(wù)粟按、啟動服務(wù)并關(guān)閉關(guān)聯(lián)服務(wù)相關(guān)容器的一些列操作
    version 打印版本信息

四、常用命令使用

  1. up
    格式為:

    docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]
    

    up命令十分強大疼鸟,它嘗試自動完成包括構(gòu)建鏡像庙曙,(重新)創(chuàng)建服務(wù),啟動服務(wù),并關(guān)聯(lián)服務(wù)相關(guān)容器的 一些列操作张抄。鏈接的服務(wù)都將會被自動啟動舶斧,除非已經(jīng)處于運行狀態(tài)。
    多數(shù)情況下我們可以直接通過該命令來啟動一個項目茴厉。
    選項包括:

    -d 在后臺運行服務(wù)容器
    –no-color 不使用顏色來區(qū)分不同的服務(wù)的控制輸出
    –no-deps 不啟動服務(wù)所鏈接的容器
    –force-recreate 強制重新創(chuàng)建容器,不能與–no-recreate同時使用
    –no-recreate 如果容器已經(jīng)存在怀酷,則不重新創(chuàng)建嗜闻,不能與–force-recreate同時使用
    –no-build 不自動構(gòu)建缺失的服務(wù)鏡像
    –build 在啟動容器前構(gòu)建服務(wù)鏡像
    –abort-on-container-exit 停止所有容器,如果任何一個容器被停止琉雳,不能與-d同時使用
    -t, --timeout TIMEOUT 停止容器時候的超時(默認(rèn)為10秒)
    –remove-orphans 刪除服務(wù)中沒有在compose文件中定義的容器
    –scale SERVICE=NUM 設(shè)置服務(wù)運行容器的個數(shù),將覆蓋在compose中通過scale指定的參數(shù)

  2. ps
    格式為:

    docker-compose ps [options] [SERVICE...]
    

    列出項目中目前的所有容器檐束。
    選項包括:

    -q 只打印容器的ID信息

  3. stop
    格式為:

    docker-compose stop [options] [SERVICE...]
    

    停止已經(jīng)處于運行狀態(tài)的容器束倍,但不刪除它。
    選項包括:

    -t, --timeout TIMEOUT 停止容器時候的超時(默認(rèn)為10秒)

  4. down
    格式為:

    docker-compose down [options]
    

    停止和刪除容器甥桂、網(wǎng)絡(luò)邮旷、卷黄选、鏡像婶肩,這些內(nèi)容是通過docker-compose up命令創(chuàng)建的. 默認(rèn)值刪除 容器 網(wǎng)絡(luò),可以通過指定 rmi 、volumes參數(shù)刪除鏡像和卷蜂嗽。
    選項包括:

    –rmi type 刪除鏡像,類型必須是: ‘a(chǎn)ll’: 刪除compose文件中定義的所以鏡像辱揭;‘local’: 刪除鏡像名為空的
    鏡像
    -v, --volumes 刪除已經(jīng)在compose文件中定義的和匿名的附在容器上的數(shù)據(jù)卷
    –remove-orphans 刪除服務(wù)中沒有在compose中定義的容器

    在root目錄下,移除root的實例:

    [root@localhost ~]# docker-compose down
    Stopping root_mysql_1 ... done
    Stopping root_php_1   ... done
    Removing root_mysql_1 ... done
    Removing root_php_1   ... done
    Removing root_nginx_1 ... done
    Removing network root_web-net
    
  5. restart
    格式為:

    docker-compose restart [options] [SERVICE...]
    

    重啟項目中的服務(wù)亥鬓。
    選項包括:

    -t, --timeout TIMEOUT 指定重啟前停止容器的超時(默認(rèn)為10秒)

  6. rm
    格式為:

    docker-compose rm [options] [SERVICE...]
    

    刪除所有(停止?fàn)顟B(tài)的)服務(wù)容器域庇。
    選項包括:

    –f, --force 強制直接刪除,包括非停止?fàn)顟B(tài)的容器
    -v 刪除容器所掛載的數(shù)據(jù)卷

  7. start
    格式為:

    docker-compose start [SERVICE...]
    

    啟動已經(jīng)存在的服務(wù)容器听皿。

  8. run
    格式為:

    docker-compose run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]
    

    在指定服務(wù)上執(zhí)行一個命令。
    例如:

    docker-compose run ubuntu ping www.baidu.com
    

    將會執(zhí)行一個ubuntu容器庵朝,并執(zhí)行ping www.baidu.com命令又厉。
    將會執(zhí)行一個ubuntu容器,并執(zhí)行ping www.baidu.com命令覆致。
    默認(rèn)情況下,如果存在關(guān)聯(lián)勾怒,則所有關(guān)聯(lián)的服務(wù)將會自動被啟動声旺,除非這些服務(wù)已經(jīng)在運行中。該命令類似于啟動容器后運行指定的命令腮猖,相關(guān)卷、鏈接等都會按照配置自動創(chuàng)建坪创。有兩個不同點:

    1. 給定命令將會覆蓋原有的自動運行命令
    2. 不會自動創(chuàng)建端口姐赡,以避免沖突
      如果不希望自動啟動關(guān)聯(lián)的容器,可以使用–no-deps選項项滑,例如:
    docker-compose run --no-deps web
    

    將不會啟動web容器關(guān)聯(lián)的其他容器。
    選項包括:

    -d 在后臺運行服務(wù)容器
    –name NAME 為容器指定一個名字
    –entrypoint CMD 覆蓋默認(rèn)的容器啟動指令
    -e KEY=VAL 設(shè)置環(huán)境變量值危喉,可多次使用選項來設(shè)置多個環(huán)境變量
    -u, --user="" 指定運行容器的用戶名或者uid
    –no-deps 不自動啟動管理的服務(wù)容器
    –rm 運行命令后自動刪除容器,d模式下將忽略
    -p, --publish=[] 映射容器端口到本地主機
    –service-ports 配置服務(wù)端口并映射到本地主機
    -v, --volume=[] 綁定一個數(shù)據(jù)卷辜限,默認(rèn)為空
    -T 不分配偽tty,意味著依賴tty的指令將無法運行
    -w, --workdir="" 為容器指定默認(rèn)工作目錄

  9. con?g
    格式為:

    docker-compose config [options]
    

    驗證并查看compose文件配置氧急。
    選項包括:

    –resolve-image-digests 將鏡像標(biāo)簽標(biāo)記為摘要
    -q, --quiet 只驗證配置岂座,不輸出。 當(dāng)配置正確時费什,不輸出任何內(nèi)容,當(dāng)文件配置錯誤瘩蚪,輸出錯誤信息
    –services 打印服務(wù)名稿黍,一行一個
    –volumes 打印數(shù)據(jù)卷名,一行一個

  10. kill
    格式為:

    docker-compose kill [options] [SERVICE...]
    

    通過發(fā)送SIGKILL信號來強制停止服務(wù)容器巡球。 支持通過-s參數(shù)來指定發(fā)送的信號,例如:通過如下指令發(fā)送SIGINT信號:

    docker-compose kill -s SIGINT
    
  11. create
    格式為:

    docker-compose create [options] [SERVICE...]
    

    為服務(wù)創(chuàng)建容器.只是單純的create险胰,還需要使用start啟動compose矿筝。
    選項包括:

    –force-recreate 重新創(chuàng)建容器,即使它的配置和鏡像沒有改變窖维,不兼容–no-recreate參數(shù)
    –no-recreate 如果容器已經(jīng)存在,不需要重新創(chuàng)建. 不兼容–force-recreate參數(shù)
    –no-build 不創(chuàng)建鏡像鼻疮,即使缺失
    –build 創(chuàng)建容器前琳轿,生成鏡像

  12. exec
    格式為:

    docker-compose exec [options] SERVICE COMMAND [ARGS...]
    

    與docker exec 命令功能相同震贵,可以通過service name登陸到容器中水评。
    選項包括:

    -d 分離模式媚送,后臺運行命令.
    –privileged 獲取特權(quán).
    –user USER 指定運行的用戶.
    -T 禁用分配TTY. By default docker-compose exec分配 a TTY.
    –index=index 當(dāng)一個服務(wù)擁有多個容器時,可通過該參數(shù)登陸到該服務(wù)下的任何服務(wù)塘偎,例如:docker-compose exec --index=1 web /bin/bash ,web服務(wù)中包含多個容器

五咱扣、docker-compose模版文件使用

模板文件是docker-compose的核心涵防。在文件中闹伪,可以根據(jù)自己的定義壮池,管理多個容器的操作,包括他們的運行厅克,通信等橙依。模板文件的模式名稱是docker-compose.yml,格式是YAML合適窗骑。
一個模板文件的格式如下

version: "2"
services:

volumes:

networks:

services:
定義應(yīng)用需要的服務(wù)的項目,包括定義服務(wù)的名字鲤竹,鏡像昔榴,數(shù)據(jù)卷,所屬網(wǎng)絡(luò)互订,依賴的其他服務(wù)等。
volumes:
這里定義數(shù)據(jù)卷的名稱氮墨,供不同服務(wù)下的應(yīng)用使用。
networks:
這里定義網(wǎng)路的名稱规揪,供不同的服務(wù)下的應(yīng)用使用。

Docker Compose常用模板文件主要命令:

指令 功能
build 指定服務(wù)鏡像Docker?le所在路徑
cap_add字支,cap_drop 指定容器的內(nèi)核能力(capacity)分配
command 覆蓋容器啟動后默認(rèn)執(zhí)行的命令
cgroup_parent 指定父cgroup組奸忽,意味著將基礎(chǔ)該組的資源限制
container_name 指定容器名稱。默認(rèn)將會使用項目名稱服務(wù)名稱序號這樣的格式
devices 指定設(shè)置映射關(guān)系
dns 自定義DNS服務(wù)器欠雌。可以是一個值富俄,也可以是一個列表
dns_search 配置DNS搜索域而咆。可以是一個值翘盖,也可以是一個列表
docker?le 指定額外編譯鏡像的Docker?le文件,可以通過該指令來指定
env_?le 從文件中獲取環(huán)境變量阁危,可以為單獨的文件路徑或列表
environment 設(shè)置環(huán)境變量汰瘫,可以使用數(shù)組或字典兩種格式
expose 暴露端口
external_links 鏈接到docker-compose.yml外部的容器,甚至可以是非Compose管理的外部容器
extra_hosts 指定額外的host名稱映射信息
image 指定為鏡像名稱或鏡像ID趴乡。如果鏡像在本地不存在蝗拿,Compose將會嘗試?yán)∵@個鏡像
labels 指定服務(wù)鏡像Docker?le所在路徑
links 鏈接到其他服務(wù)中的容器
log_driver 指定日志驅(qū)動類型,類似于Docker中的–log-driver參數(shù)哀托。目前支持三種日志驅(qū)動類型:log_driver:“json-?le”、 log_driver:“syslog”仓手、log_driver:“none”
log_opt 日志驅(qū)動的相關(guān)參數(shù)
net 設(shè)置網(wǎng)絡(luò)模式。參數(shù)類似于docker clinet的–net參數(shù)一樣
pid 跟主機系統(tǒng)共享進(jìn)程命名空間呀伙。打開該選項的容器之間,以及容器和宿主機系統(tǒng)之間可以通過進(jìn)程ID來相互訪問和操作
ports 暴露端口信息
security_opt 指定容器模板標(biāo)簽(label)機制的默認(rèn)屬性(如用戶干像、角色驰弄、類型速客、級別等)
ulimits 指定容器的ulimits限制值
volumes 數(shù)據(jù)卷所掛載路徑設(shè)置∧缰埃可以設(shè)置宿主機路徑(HOST:CONTAINER)或加上訪問模式(HOST:CONTAINER:ro) 卷-官方文檔

這里展示了一個使用模板文件的實例:

version: '1'
services:
  redis:
    image: redis
    ports:
      - "6379:6379"
    container_name: "redis"
    networks: 
      - dev
  mysql:
    image: centos/mysql-57-centos7
    environment:
      MYSQL_ROOT_PASSWORD: "root"
    ports: 
      - "3306:3306"
    container_name: "mysql"
    networks: 
      - dev
  web:
    image: tomcat
    ports: 
      - "9090:8080"
    container_name: "web"
    networks: 
      - dev
      - pro
networks:
  dev:
    driver: bridge
  pro:
    driver: bridge
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末浪耘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子七冲,更是在濱河造成了極大的恐慌,老刑警劉巖澜躺,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掘鄙,死亡現(xiàn)場離奇詭異,居然都是意外死亡操漠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門撞秋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嚣鄙,“玉大人,你說我怎么就攤上這事拗慨》盥” “怎么了剧蹂?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長先巴。 經(jīng)常有香客問我冒冬,道長,這世上最難降的妖魔是什么简烤? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮挥萌,結(jié)果婚禮上枉侧,老公的妹妹穿的比我還像新娘。我一直安慰自己榨馁,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布徒像。 她就那樣靜靜地躺著蛙讥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪次慢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天劈愚,我揣著相機與錄音闻妓,去河邊找鬼。 笑死由缆,一個胖子當(dāng)著我的面吹牛猾蒂,可吹牛的內(nèi)容都是我干的是晨。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼蚊逢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了烙荷?” 一聲冷哼從身側(cè)響起檬寂,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后扒袖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡野瘦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年飒泻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泞遗。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡史辙,死狀恐怖汹买,靈堂內(nèi)的尸體忽然破棺而出聊倔,到底是詐尸還是另有隱情,我是刑警寧澤见妒,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布甸陌,位于F島的核電站盐股,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏遂庄。R本人自食惡果不足惜劲赠,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凛澎。 院中可真熱鬧,春花似錦沫换、人聲如沸最铁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至雀哨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間膊夹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工放刨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留尸饺,地道東北人。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓麻昼,卻偏偏與公主長得像馋辈,于是被迫代替她去往敵國和親抚芦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348