docker(Compose)

Docker Compose :適合單機(jī)啟動(dòng)一個(gè)多容器項(xiàng)目符相,容器編排
官方文檔:https://docs.docker.com/compose

操作流程:

1.定義:Dockerfile文件,構(gòu)建自己的鏡像
2.定義:docker-composer.yml班缰,編排容器啟動(dòng)配置文件
3.啟動(dòng):docker compose up -d 啟動(dòng)項(xiàng)目

composer 安裝

  • 方式1:docker引擎自帶,docker compose(推薦)
  • 方式2:下載單獨(dú)的docker-compose執(zhí)行文件袍睡,不推薦

compose常用命令

# 查看幫助
docker compose -h
# 啟動(dòng)所有docker-compose服務(wù)
docker compose up [服務(wù)name]
# 啟動(dòng)所有docker-compose服務(wù)并后臺(tái)運(yùn)行
docker compose up -d [服務(wù)name]
# 停止并刪除所有容器雀监、網(wǎng)絡(luò)寺枉、卷揭芍、鏡像胳搞。慎用!3蒲睢肌毅!
docker compose down [服務(wù)name]
# 進(jìn)入容器實(shí)例內(nèi)部 docker compose exec compose.yaml文件中寫的服務(wù)id/bin/bash
compose exec yaml里面的服務(wù)id
# 展示當(dāng)前docker compose編排過的運(yùn)行的所有容器
docker compose ps [-a]
# 展示當(dāng)前docker compose編排過的容器進(jìn)程
docker compose top
# 查看容器輸出日志
docker compose logs yaml里面的服務(wù)id
# 檢查配置
dokcer compose config
# 檢查配置,有問題才有輸出
dokcer compose config -q
# 重啟服務(wù)
docker compose restart [服務(wù)name]
# 啟動(dòng)服務(wù)
docker compose start [服務(wù)name]
# 停止服務(wù)
docker compose stop [服務(wù)name]

配置文件命名規(guī)則:

compose.yaml(首選)或compose.yml放置在工作目錄中
還支持docker-compose.yaml或docker-compose.yml(為向前兼容老版本姑原,不推薦)

配置文件規(guī)則:官網(wǎng)文檔

composer.yaml 核心文件

version: "3" # 版本
services: # 服務(wù)容器集合
    服務(wù)1:web
          # 服務(wù)配置
            image
            networks
            ......
    服務(wù)2:redis
             ...
    # 其他配置 網(wǎng)絡(luò)/卷悬而、全局規(guī)則
    volumes:
    network:   
    configs:

composer.yaml 示例

version: "3"

#   服務(wù)容器集合
services:
  #  服務(wù)名(自己定義)
  my_app:
    #    容器鏡像,可以是拉取锭汛,也可以是構(gòu)建摊滔,本示例中使用自己構(gòu)建的鏡像
    image: zx_docker:1.1
    #    指定容器name,不指定則自動(dòng)生成,生成規(guī)則:文件夾 - 服務(wù)名 - 序號(hào)
    container_name: my_app
    #    暴露端口
    ports:
      - "8080:8777"
    #    指定的網(wǎng)絡(luò)
    networks:
      - my_app_net
    #    指定啟動(dòng)該容器需要的依賴:先啟動(dòng)依賴后再啟動(dòng)該容器
    depends_on:
      - redis
      - mysql

  #  redis服務(wù)容器
  redis:
    image: redis:6.0.8
    ports:
      - "6379:6379"
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
    networks:
      - my_app_net
    command: redis-server /etc/redis/redis.conf

  #  mysql服務(wù)容器
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'my_db'
      MYSQL_USER: 'admin'
      MYSQL_PASSWORD: '123456'
    ports:
      - "3306:3306"
    volumes:
      - /app/mysql/db:/var/lib/mysql
      - /app/mysql/conf/my.cnf:/etc/my.cnf
      - /app/mysql/init:/docker-entrypoint-initdb.d
    networks:
      - my_app_net
    command: --default-authentication-plugin=mysql_native_password

#   應(yīng)用的自定義網(wǎng)絡(luò),用于該應(yīng)用容器間可以通過服務(wù)名進(jìn)行網(wǎng)絡(luò)通訊
networks:
  my_app_net:

操作

配置文件compose.yaml在myapp文件夾中
[root@test myapp]# pwd
/root/myapp
[root@test myapp]# ls
compose.yaml
  • 啟動(dòng)應(yīng)用
[root@test myapp]# docker compose up -d
[+] Running 4/4
 ? Network myapp_my_app_net  Created                    0.2s  # 創(chuàng)建網(wǎng)絡(luò)
 ? Container myapp-mysql-1   Started                    0.0s  # 啟動(dòng)mysql容器
 ? Container myapp-redis-1   Started                    0.0s  # 啟動(dòng)redis容器
 ? Container my_app          Star...                    0.0s  # 依賴啟動(dòng)后店乐,啟動(dòng)my_app容器

[root@test myapp]# docker compose ps 查看容器進(jìn)程,該應(yīng)用的所有容器均已啟動(dòng)
NAME            IMAGE           COMMAND                                                                        SERVICE   CREATED         STATUS         PORTS
# 容器名按照定義生成
my_app          zx_docker:1.1   "java -jar /zx_docker.jar"                                                     my_app    4 minutes ago   Up 4 minutes   0.0.0.0:8080->8777/tcp, :::8080->8777/tcp
# 容器名生成按照:文件夾-服務(wù)名-序號(hào)
myapp-mysql-1   mysql:5.7       "docker-entrypoint.sh --default-authentication-plugin=mysql_native_password"   mysql     4 minutes ago   Up 4 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp
# 容器名生成按照:文件夾-服務(wù)名-序號(hào)
myapp-redis-1   redis:6.0.8     "docker-entrypoint.sh redis-server /etc/redis/redis.conf"                      redis     4 minutes ago   Up 4 minutes   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp
  • 查看網(wǎng)絡(luò)
[root@test myapp]# docker network ls
NETWORK ID     NAME               DRIVER    SCOPE
a778d03f2a7e   bridge             bridge    local
7bc8fedda4c5   host               host      local
361ece4d96aa   none               null      local
d00da985214d   myapp_my_app_net   bridge    local 創(chuàng)建出新網(wǎng)絡(luò),用于該應(yīng)用容器之間通訊
  • 停止
[root@test myapp]# docker compose  stop [服務(wù)名 可指定多個(gè)服務(wù)容器]
[+] Stopping 3/3
 ? Container my_app         Stopp...                    0.2s 
 ? Container myapp-mysql-1  Stopped                     2.0s 
 ? Container myapp-redis-1  Stopped                     0.2s
[root@test myapp]# docker compose ps 查看容器進(jìn)程,該應(yīng)用的所有容器均已停止
NAME      IMAGE     COMMAND   SERVICE   CREATED   STATUS    PORTS
  • 啟動(dòng)start
[root@test myapp]# docker compose  start [服務(wù)名 可指定多個(gè)服務(wù)容器]
[+] Running 3/3
 ? Container myapp-mysql-1  Started                     0.3s 
 ? Container myapp-redis-1  Started                     0.4s 
 ? Container my_app         Start...                    0.3s
[root@test myapp]# docker compose ps 查看容器進(jìn)程,該應(yīng)用的所有容器均已啟動(dòng)
NAME            IMAGE           COMMAND                                                                        SERVICE   CREATED          STATUS         PORTS
my_app          zx_docker:1.1   "java -jar /zx_docker.jar"                                                     my_app    14 minutes ago   Up 8 seconds   0.0.0.0:8080->8777/tcp, :::8080->8777/tcp
myapp-mysql-1   mysql:5.7       "docker-entrypoint.sh --default-authentication-plugin=mysql_native_password"   mysql     14 minutes ago   Up 8 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp
myapp-redis-1   redis:6.0.8     "docker-entrypoint.sh redis-server /etc/redis/redis.conf"                      redis     14 minutes ago   Up 8 seconds   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp
  • 重啟
[root@test myapp]# docker compose  restart [服務(wù)名 可指定多個(gè)服務(wù)容器]
[+] Restarting 3/3
 ? Container myapp-mysql-1  Started                     1.7s 
 ? Container my_app         Start...                    0.5s 
 ? Container myapp-redis-1  Started                     0.5s 
[root@test myapp]# 
[root@test myapp]# docker compose ps 查看容器進(jìn)程,該應(yīng)用的所有容器均已啟動(dòng)
NAME            IMAGE           COMMAND                                                                        SERVICE   CREATED          STATUS         PORTS
my_app          zx_docker:1.1   "java -jar /zx_docker.jar"                                                     my_app    15 minutes ago   Up 6 seconds   0.0.0.0:8080->8777/tcp, :::8080->8777/tcp
myapp-mysql-1   mysql:5.7       "docker-entrypoint.sh --default-authentication-plugin=mysql_native_password"   mysql     15 minutes ago   Up 4 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp
myapp-redis-1   redis:6.0.8     "docker-entrypoint.sh redis-server /etc/redis/redis.conf"                      redis     15 minutes ago   Up 6 seconds   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp
  • 關(guān)閉 停止并刪除所有容器呻袭、網(wǎng)絡(luò)眨八、卷、鏡像左电。慎用A唷!篓足!
[root@test myapp]# docker compose down
[+] Running 4/4
 ? Container my_app          Remo...                    0.2s 
 ? Container myapp-mysql-1   Removed                    1.5s 
 ? Container myapp-redis-1   Removed                    0.1s 
 ? Network myapp_my_app_net  Removed                    0.1s 
[root@test myapp]# 
[root@test myapp]# docker compose ps 容器已移除
NAME      IMAGE     COMMAND   SERVICE   CREATED   STATUS    PORTS
[root@test myapp]# 
[root@test myapp]# docker network ls 自定義網(wǎng)絡(luò)已被刪除
NETWORK ID     NAME      DRIVER    SCOPE
a778d03f2a7e   bridge    bridge    local
7bc8fedda4c5   host      host      local
361ece4d96aa   none      null      local
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末段誊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子栈拖,更是在濱河造成了極大的恐慌连舍,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涩哟,死亡現(xiàn)場(chǎng)離奇詭異索赏,居然都是意外死亡盼玄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門潜腻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來埃儿,“玉大人,你說我怎么就攤上這事融涣⊥” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵威鹿,是天一觀的道長剃斧。 經(jīng)常有香客問我,道長专普,這世上最難降的妖魔是什么悯衬? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮檀夹,結(jié)果婚禮上筋粗,老公的妹妹穿的比我還像新娘。我一直安慰自己炸渡,他們只是感情好娜亿,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚌堵,像睡著了一般买决。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吼畏,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天督赤,我揣著相機(jī)與錄音,去河邊找鬼泻蚊。 笑死躲舌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的性雄。 我是一名探鬼主播没卸,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼秒旋!你這毒婦竟也來了约计?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤迁筛,失蹤者是張志新(化名)和其女友劉穎煤蚌,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铺然,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年俗孝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片魄健。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赋铝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沽瘦,到底是詐尸還是另有隱情革骨,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布析恋,位于F島的核電站良哲,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏助隧。R本人自食惡果不足惜筑凫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望并村。 院中可真熱鬧巍实,春花似錦、人聲如沸哩牍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽膝昆。三九已至丸边,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荚孵,已是汗流浹背妹窖。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留收叶,地道東北人骄呼。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像滔驾,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子俄讹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容