在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Docker Compose的常用命令

馬哥Linux運(yùn)維 ? 來(lái)源:CSDN技術(shù)社區(qū) ? 2025-04-30 13:40 ? 次閱讀

大家好,今天給大家分享Docker Compose的常用命令,以及docker-compose文件的屬性。Docker Compose 是一個(gè)用于定義和運(yùn)行多容器 Docker 應(yīng)用應(yīng)用的重要工具。它通過(guò)一個(gè)配置文件(docker-compose.yml)來(lái)詳細(xì)定義多個(gè)容器之間的關(guān)聯(lián)、網(wǎng)絡(luò)設(shè)置、服務(wù)端口等信息。使用一條簡(jiǎn)單的命令,就可以輕松啟動(dòng)、停止和管理這些容器,極大地簡(jiǎn)化了多容器應(yīng)用的部署與管理流程,方便實(shí)現(xiàn)應(yīng)用的快速構(gòu)建、開(kāi)發(fā)、測(cè)試以及部署。

Docker Compose 將所管理的容器劃分為三層,即工程(project)、服務(wù)(service)和容器(container)。在 Docker Compose 運(yùn)行目錄下,所有文件(主要是 docker-compose.yml)共同構(gòu)成一個(gè)工程。一個(gè)工程中包含多個(gè)服務(wù),每個(gè)服務(wù)中又定義了容器運(yùn)行所需的鏡像、參數(shù)和依賴等。并且,一個(gè)服務(wù)可以包含多個(gè)容器實(shí)例。

關(guān)于 Docker 的安裝和常用命令,本文不做詳細(xì)說(shuō)明,可以參考:
Docker在Windows與CentOS上的安裝
Docker常用命令

一、Docker Compose常用命令

執(zhí)行docker-compose命令時(shí),需要在執(zhí)行命令的目錄下存在 docker-compose.yml 或者 docker-compose.yaml

ps:列出所有運(yùn)行容器

docker-compose ps

build:構(gòu)建或者重新構(gòu)建服務(wù)

docker-compose build

logs:查看服務(wù)日志輸出

docker-compose logs

port:打印綁定的公共端口

# 輸出 mysql 服務(wù) 3306 端口所綁定的公共端口
docker-compose port mysql 3306

start:?jiǎn)?dòng)指定服務(wù)已存在的容器

docker-compose start mysql

stop:停止已運(yùn)行的服務(wù)的容器

docker-compose stop mysql

rm:刪除指定服務(wù)的容器

docker-composermmysql

scale:設(shè)置指定服務(wù)運(yùn)氣容器的個(gè)數(shù),以 service=num 形式指定

docker-compose mysql user=3 movie=3

run:在一個(gè)服務(wù)上執(zhí)行一個(gè)命令

docker-compose run web bash

up:構(gòu)建、啟動(dòng)容器

docker-compose up

注意:

? docker-compose的文件,只有在文件名為docker-compose時(shí)才可以使用docker-compose up命令,如果名字為自定義時(shí),需要指定文件名才行,命令為:

docker-compose -f my-compose.yml up

? docker-compose文件名后綴使用 .yml 或 .yaml都可。

? 若是要后臺(tái)運(yùn)行,加上-d

docker-compose up -d

kill:通過(guò)發(fā)送 SIGKILL 信號(hào)來(lái)停止指定服務(wù)的容器

docker-composekillmysql

pull:下載服務(wù)鏡像

docker-compose pull mysql:lasted

二、docker-compose.yaml文件屬性

Docker Compose 的 yaml 文件有著嚴(yán)格的縮進(jìn)和空格要求,一般來(lái)說(shuō),它主要由以下幾個(gè)部分構(gòu)成:

首先是版本(Version),這是 Docker Compose 文件的頂級(jí)元素,用于明確所采用的 Docker Compose 文件版本,進(jìn)而確定所使用的語(yǔ)法及支持的功能。

其次是服務(wù)(Services),該部分對(duì)應(yīng)用程序的各個(gè)服務(wù)或容器進(jìn)行定義。每個(gè)服務(wù)都擁有獨(dú)特的名稱,并囊括了該服務(wù)的配置信息,比如所應(yīng)用的鏡像、環(huán)境變量、端口映射、卷掛載等。

再者是網(wǎng)絡(luò)(Networks),這部分負(fù)責(zé)定義應(yīng)用程序的網(wǎng)絡(luò)配置。可以創(chuàng)建自定義網(wǎng)絡(luò),并明確容器連接到哪個(gè)網(wǎng)絡(luò)上,以實(shí)現(xiàn)容器之間的順暢通信。

還有卷(Volumes),該部分定義了應(yīng)用程序的卷掛載配置??梢灾付ㄈ萜髋c宿主機(jī)之間文件或目錄的映射關(guān)系,從而實(shí)現(xiàn)數(shù)據(jù)的持久化和共享。

另外,環(huán)境變量(Environment Variables)也是重要部分,在服務(wù)的配置中,可以通過(guò) environment 或 env_file 字段來(lái)指定環(huán)境變量,這些環(huán)境變量會(huì)被傳遞到容器內(nèi)運(yùn)行的應(yīng)用程序中。

同時(shí),端口映射(Port Mapping)也不可或缺,在服務(wù)的配置中,可以利用 ports 字段來(lái)明確容器端口與宿主機(jī)端口之間的映射關(guān)系,以此實(shí)現(xiàn)從宿主機(jī)訪問(wèn)容器內(nèi)運(yùn)行的服務(wù)。

最后是卷掛載(Volume Mounting),在服務(wù)的配置中,可以通過(guò) volumes 字段來(lái)指定容器內(nèi)路徑與宿主機(jī)路徑之間的映射關(guān)系,使容器與宿主機(jī)能夠共享文件和數(shù)據(jù)。

官方文檔:https://docs.docker.com/compose/reference/build/

Compose文與和Docker的兼容性:

目前 Compose 文件格式有3個(gè)版本,分別為1、2.x 和 3.x。
主流的為 3.x 其支持 docker 1.13.0 及其以上的版本。

version

'3’表示使用第三代語(yǔ)法來(lái)構(gòu)建 docker-compose.yaml 文件。

services

用來(lái)表示 compose 需要啟動(dòng)的服務(wù)。

image

指定啟動(dòng)容器的鏡像,可以是鏡像倉(cāng)庫(kù)/標(biāo)簽或者鏡像id(或者id的前一部分)

container_name

容器名稱,指定一個(gè)自定義容器名,而不是默認(rèn)生成的名稱。

environment

此節(jié)點(diǎn)下的信息會(huì)當(dāng)作環(huán)境變量傳入容器。

ports

本地端口/容器端口,將容器中的端口映射到本地端口上。

restart

always 表示如果服務(wù)啟動(dòng)不成功會(huì)一直嘗試。

volumes

映射容器中的文件到本地,本地的也會(huì)映射到容器中。

depends_on

可以配置依賴服務(wù),表示需要先啟動(dòng) depends_on 下面的服務(wù)后,再啟動(dòng)本服務(wù)。

build

用來(lái)構(gòu)建指定路徑的Dockerfile文件以及args參數(shù)

version:'2'
services:
webapp:
 build:
  context:./my_dir #如果是.表示當(dāng)前路徑
  dockerfile:Dockerfile-alternate# 指定Dockerfile文件名。如果上面context指定了文件名,這里就不用本屬性了
  args:
   buildno:1

webapp服務(wù)將會(huì)通過(guò)./my_dir目錄下的Dockerfile-alternate文件構(gòu)建容器鏡像。
如果你同時(shí)指定image和build,則compose會(huì)通過(guò)build指定的目錄構(gòu)建容器鏡像,而構(gòu)建的鏡像名為image中指定的鏡像名和標(biāo)簽。
image: webapp:tag
這將由./dir構(gòu)建的名為webapp和標(biāo)記為tag的鏡像。

image

image指定啟動(dòng)容器的鏡像,可以是鏡像倉(cāng)庫(kù)/標(biāo)簽或者鏡像id(或者id的前一部分)

image:mysql
image:ubuntu:14.03
image:tutum/influxdb
image:example-registry.com:3000/postgresql
image:a4nhg65fd

如果鏡像不存在,Compose將嘗試從官方鏡像倉(cāng)庫(kù)將其pull下來(lái),如果你還指定了build,在這種情況下,它將使用指定的build選項(xiàng)構(gòu)建它,并使用image指定的名字和標(biāo)記對(duì)其進(jìn)行標(biāo)記。

volumes

卷掛載路徑設(shè)置,就是將容器中的文件映射到宿主機(jī)中,方便修改。

volumes:
# 只需指定一個(gè)路徑,讓引擎創(chuàng)建一個(gè)卷
-/var/lib/mysql

# 指定絕對(duì)路徑映射
-/opt/data:/var/lib/mysql

# 指定相對(duì)路徑映射
-./cache:/tmp/cache

# 文件映射
-./cache/abc.java:/tmp/cache/abc.java

# 用戶主目錄相對(duì)路徑映射,此處 ro 下面詳解
-~/configs:/etc/configs/:ro

# 命名卷
-datavolume:/var/lib/mysql

ro、rw詳解:

? 不指定
文件:宿主機(jī)修改該文件后容器里面看不到變化;容器里面修改該文件,宿主機(jī)也看不到變化
文件夾:不管是宿主機(jī)還是容器內(nèi)修改、新增、刪除文件,都會(huì)相互同步

? ro
文件:容器內(nèi)不能修改,會(huì)提示read-only
文件夾:容器內(nèi)不能修改、新增、刪除文件夾中的文件,會(huì)提示read-only

? rw
文件:不管是宿主機(jī)還是容器內(nèi)修改,都會(huì)相互同步,但容器內(nèi)不允許刪除,會(huì)提示Device or resource busy;宿主機(jī)刪除文件,容器內(nèi)的不會(huì)被同步
文件夾:不管是宿主機(jī)還是容器內(nèi)修改、新增、刪除文件,都會(huì)相互同步

links

鏈接到另一個(gè)服務(wù)中的容器。 請(qǐng)指定服務(wù)名稱和鏈接別名(SERVICE:ALIAS),或者僅指定服務(wù)名稱。

web:
links:
 -db
 -db:database
 -redis

links也可以起到和depends_on相似的功能,即定義服務(wù)之間的依賴關(guān)系,從而確定服務(wù)啟動(dòng)的順序。

external_links

鏈接到docker-compose.yml 外部的容器,甚至并非 Compose 管理的容器。參數(shù)格式跟 links 類似。

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

restart

設(shè)置容器重啟策略

# 默認(rèn)策略,在任何情況下都不會(huì)重啟容器
restart:"no"
# 容器總是在停止后重新啟動(dòng)
restart:always
# 容器非正常退出時(shí),退出狀態(tài)非0才會(huì)重啟 
restart:on-failure
# 指定容器退出后的重啟策略為始終重啟,但是不考慮在Docker守護(hù)進(jìn)程啟動(dòng)時(shí)就已經(jīng)停止了的容器
restart:unless-stopped

network_mode

設(shè)置網(wǎng)絡(luò)模式

# 橋接模式
network_mode:"bridge"
# 本機(jī)模式
network_mode:"host"
network_mode:"none"
network_mode:"service:[service name]"
network_mode:"container:[container name/id]"

networks

配置容器連接的網(wǎng)絡(luò),引用頂級(jí) networks 下的條目 。

services:
some-service:
 networks:
  some-network:
   aliases:
    -alias1
  other-network:
   aliases:
    -alias2
networks:
some-network:
 driver:custom-driver-1

注意:
aliases :同一網(wǎng)絡(luò)上的其他容器可以使用服務(wù)名稱或此別名來(lái)連接到對(duì)應(yīng)容器的服務(wù)。

expose

暴露端口,但不映射到宿主機(jī),只被連接的服務(wù)訪問(wèn)。 僅可以指定內(nèi)部端口為參數(shù)。

expose:
-"3000"
-"8000"

ports

暴露端口信息。 常用的簡(jiǎn)單格式:使用宿主機(jī):容器(HOST:CONTAINER)。

ports:
-"3000"
-"3000-3005"
-"8000:8000"
-"9090-9091:8080-8081"
-"49100:22"
-"127.0.0.18001"
-"127.0.0.15000-5010"
-"6060:6060/udp"

在v3.2中ports的長(zhǎng)格式的語(yǔ)法允許配置不能用短格式表示的附加字段。 長(zhǎng)格式:

ports:
-target:80
 published:8080
 protocol:tcp
 mode:host

target:容器內(nèi)的端口
published:物理主機(jī)的端口
protocol:端口協(xié)議(tcp或udp)
mode:host 和ingress 兩種模式,host用于在每個(gè)節(jié)點(diǎn)上發(fā)布主機(jī)端口,ingress 用于被負(fù)載平衡的swarm模式端口。

pid

將pid模式設(shè)置為主機(jī)pid模式。 這就打開(kāi)了容器與主機(jī)操作系統(tǒng)之間的共享pid地址空間。 使用此標(biāo)志啟動(dòng)的容器將能夠訪問(wèn)和操作裸機(jī)的命名空間中的其他容器,反之亦然。即打開(kāi)該選項(xiàng)的容器可以相互通過(guò)進(jìn)程 ID 來(lái)訪問(wèn)和操作。

pid:"host"

container_name

指定一個(gè)自定義容器名稱,而不是生成的默認(rèn)名稱。

version:'3'
services:
node-exporter:
 image:prom/node-exporter:latest
 # 由于Docker容器名稱必須是唯一的,因此如果指定了自定義名稱,則無(wú)法將服務(wù)擴(kuò)展到多個(gè)容器。
 container_name:node-exporter
 restart:always
 ports:
  -"9100:9100"

environment

配置環(huán)境變量

version:'3'
services:
mysqld-exporter:
 image:prom/mysqld-exporter
 container_name:mysqld-exporter
 restart:always
 ports:
  -"9104:9104"
 environment:
  -DATA_SOURCE_NAME="user:password@(hostname:3306)/"

三、docker-compose.yaml文件示例

以下是一個(gè)完成的 docker-compose.yaml 文件內(nèi)容示例:

version:"3"
services:
 redis:
   image:redis:latest
   ports:
     -"6379:6379"
   container_name:im-redis-compose
   restart:always
   command:redis-server--appendonlyyes
 
 rabbitmq:
   image:rabbitmq:management
   ports:
     -"5672:5672"
     -"15672:15672"
   container_name:im-rabbitmq-compose
   environment:
     RABBITMQ_DEFAULT_USER:guest
     RABBITMQ_DEFAULT_PASS:guest
     RABBITMQ_DEFAULT_VHOST:my_vhost

 backend:
   build:.
   links:
     -redis
     -rabbitmq
   container_name:im-server-compose
   restart:on-failure
   depends_on:
     -rabbitmq
     -redis
   ports:
     -"3000:3000"
   command:sh-c'./wait-for.sh rabbitmq:15672'

鏈接:https://blog.csdn.net/xiangxi1204/article/details/138617617

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    578

    瀏覽量

    25250
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    508

    瀏覽量

    22387
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    733

    瀏覽量

    22742
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    513

    瀏覽量

    12781

原文標(biāo)題:開(kāi)發(fā)者必備:Docker Compose 常用命令與屬性全指南

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Docker常用命令大全

    Docker----常用命令大全
    發(fā)表于 05-30 16:13

    docker常用命令有哪些?

    docker常用命令Docker鏡像相關(guān)Docker容器相關(guān)Docker倉(cāng)庫(kù)相關(guān)
    發(fā)表于 11-06 06:48

    Ubuntu常用命令大全

    Ubuntu常用命令大全,包括常用管理目錄,系統(tǒng)命令,硬盤相關(guān),內(nèi)存相關(guān),查看進(jìn)程等命令
    發(fā)表于 01-06 11:16 ?0次下載

    vim常用命令

    vim常用命令
    發(fā)表于 01-08 15:59 ?3次下載

    redis常用命令總結(jié)

    本文是對(duì)redis常用命令總結(jié)。
    發(fā)表于 02-09 11:25 ?1683次閱讀

    linux常用命令手冊(cè)

    linux常用命令手冊(cè)免費(fèi)下載。
    發(fā)表于 06-01 14:59 ?70次下載

    Memcache系統(tǒng)常用命令講解

    Memcache系統(tǒng)常用命令講解(無(wú)線電源技術(shù)商業(yè)計(jì)劃書)-該文檔為Memcache系統(tǒng)常用命令講解文檔,是一份還算不錯(cuò)的參考文檔,感興趣的可以下載看看,,,,,,,,,,,,,,,,
    發(fā)表于 09-28 11:27 ?5次下載
    Memcache系統(tǒng)<b class='flag-5'>常用命令</b>講解

    linux常用命令大全

    linux常用命令大全,一些常用命令都可以找到
    發(fā)表于 03-03 09:20 ?0次下載

    DOS系統(tǒng)常用命令

    介紹了DOS系統(tǒng)的常用命令。
    發(fā)表于 03-21 14:59 ?0次下載

    Linux常用命令

    Linux常用命令
    的頭像 發(fā)表于 01-12 11:19 ?1358次閱讀

    Linux常用命令手冊(cè)分享

    linux常用命令合集
    發(fā)表于 04-26 11:46 ?1次下載

    詳解kubectl常用命令

    詳解kubectl常用命令
    的頭像 發(fā)表于 11-05 15:39 ?1226次閱讀
    詳解kubectl<b class='flag-5'>常用命令</b>

    docker-compose配置文件內(nèi)容詳解以及常用命令介紹

    。 使用 docker-compose.yml 定義構(gòu)成應(yīng)用程序的服務(wù),這樣它們可以在隔離環(huán)境中一起運(yùn)行。 最后,執(zhí)行 docker-compose up 命令來(lái)啟動(dòng)并運(yùn)行整個(gè)應(yīng)用程序。 二、
    的頭像 發(fā)表于 12-02 09:29 ?4227次閱讀
    <b class='flag-5'>docker-compose</b>配置文件內(nèi)容詳解以及<b class='flag-5'>常用命令</b>介紹

    Docker常用命令大全

    Docker 是一種開(kāi)源的應(yīng)用容器引擎,廣泛應(yīng)用于開(kāi)發(fā)、部署和運(yùn)行分布式應(yīng)用。掌握 Docker 常用命令對(duì)于開(kāi)發(fā)人員和運(yùn)維人員來(lái)說(shuō)非常重要。本文將為大家整理常用
    的頭像 發(fā)表于 04-22 12:47 ?330次閱讀

    SSH常用命令詳解

    SSH常用命令詳解
    的頭像 發(fā)表于 06-04 11:30 ?223次閱讀
    主站蜘蛛池模板: 99久久久久久久 | 日本免费网站在线观看 | 女人张开腿双腿让男人桶 | www.午夜视频 | 亚洲福利一区二区 | 手机看片1024国产基地 | 久久三级国产 | 天天狠天天插 | 欧美在线成人午夜影视 | 久草资源网 | 九九99视频在线观看视频观看 | 久久做| 亚洲成人高清在线观看 | 亚洲综合色在线 | 国产免费美女 | 女人十六毛片 | 夜夜爽天天操 | 俺来也俺来也天天夜夜视频 | 东北老女人啪啪对白 | 综合久久99| 国产玖玖 | 色香蕉色香蕉在线视频 | 一级毛片免费网站 | 永久在线观看 | 午夜黄大色黄大片美女图片 | 色综网| 亚洲人成电影 | 天天天天射 | 国产色婷婷精品综合在线手机播放 | 狠狠干免费视频 | 午夜视频在线网站 | 91夜夜人人揉人人捏人人添 | 午夜精品福利影院 | 欧美一级黄色影片 | 天天干天天操天天射 | a男人的天堂久久a毛片 | 好爽好深太大了再快一点 | 4438成人成人高清视频 | 丁香花五月婷婷开心 | 好大好紧好爽好湿润视频 | 成人观看网站a |