一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

Docker Compose的常用命令

馬哥Linux運(yùn)維 ? 來源:CSDN技術(shù)社區(qū) ? 2025-04-30 13:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

一、Docker Compose常用命令

執(zhí)行docker-compose命令時,需要在執(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:啟動指定服務(wù)已存在的容器

docker-compose start mysql

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

docker-compose stop mysql

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

docker-composermmysql

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

docker-compose mysql user=3 movie=3

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

docker-compose run web bash

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

docker-compose up

注意:

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

docker-compose -f my-compose.yml up

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

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

docker-compose up -d

kill:通過發(fā)送 SIGKILL 信號來停止指定服務(wù)的容器

docker-composekillmysql

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

docker-compose pull mysql:lasted

二、docker-compose.yaml文件屬性

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

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

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

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

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

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

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

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

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

Compose文與和Docker的兼容性:

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

version

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

services

用來表示 compose 需要啟動的服務(wù)。

image

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

container_name

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

environment

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

ports

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

restart

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

volumes

映射容器中的文件到本地,本地的也會映射到容器中。

depends_on

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

build

用來構(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ù)將會通過./my_dir目錄下的Dockerfile-alternate文件構(gòu)建容器鏡像。
如果你同時指定image和build,則compose會通過build指定的目錄構(gòu)建容器鏡像,而構(gòu)建的鏡像名為image中指定的鏡像名和標(biāo)簽。
image: webapp:tag
這將由./dir構(gòu)建的名為webapp和標(biāo)記為tag的鏡像。

image

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

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

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

volumes

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

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

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

# 指定相對路徑映射
-./cache:/tmp/cache

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

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

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

ro、rw詳解:

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

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

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

links

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

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

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

external_links

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

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

restart

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

# 默認(rèn)策略,在任何情況下都不會重啟容器
restart:"no"
# 容器總是在停止后重新啟動
restart:always
# 容器非正常退出時,退出狀態(tài)非0才會重啟 
restart:on-failure
# 指定容器退出后的重啟策略為始終重啟,但是不考慮在Docker守護(hù)進(jìn)程啟動時就已經(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ò),引用頂級 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ù)名稱或此別名來連接到對應(yīng)容器的服務(wù)。

expose

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

expose:
-"3000"
-"8000"

ports

暴露端口信息。 常用的簡單格式:使用宿主機(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的長格式的語法允許配置不能用短格式表示的附加字段。 長格式:

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

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

pid

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

pid:"host"

container_name

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

version:'3'
services:
node-exporter:
 image:prom/node-exporter:latest
 # 由于Docker容器名稱必須是唯一的,因此如果指定了自定義名稱,則無法將服務(wù)擴(kuò)展到多個容器。
 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文件示例

以下是一個完成的 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)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    578

    瀏覽量

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

    關(guān)注

    0

    文章

    509

    瀏覽量

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

    關(guān)注

    5

    文章

    734

    瀏覽量

    22792
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    514

    瀏覽量

    12843

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

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

    Docker常用命令大全

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

    docker常用命令有哪些?

    docker常用命令Docker鏡像相關(guān)Docker容器相關(guān)Docker倉庫相關(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é)

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

    linux常用命令手冊

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

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

    Memcache系統(tǒng)常用命令講解(無線電源技術(shù)商業(yè)計劃書)-該文檔為Memcache系統(tǒng)常用命令講解文檔,是一份還算不錯的參考文檔,感興趣的可以下載看看,,,,,,,,,,,,,,,,
    發(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 ?1365次閱讀

    Linux常用命令手冊分享

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

    詳解kubectl常用命令

    詳解kubectl常用命令
    的頭像 發(fā)表于 11-05 15:39 ?1256次閱讀
    詳解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 命令來啟動并運(yùn)行整個應(yīng)用程序。 二、
    的頭像 發(fā)表于 12-02 09:29 ?4273次閱讀
    <b class='flag-5'>docker-compose</b>配置文件內(nèi)容詳解以及<b class='flag-5'>常用命令</b>介紹

    Docker常用命令大全

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

    SSH常用命令詳解

    SSH常用命令詳解
    的頭像 發(fā)表于 06-04 11:30 ?349次閱讀