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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Docker Compose的常用命令

馬哥Linux運維 ? 來源:CSDN技術社區 ? 2025-04-30 13:40 ? 次閱讀

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

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

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

一、Docker Compose常用命令

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

ps:列出所有運行容器

docker-compose ps

build:構建或者重新構建服務

docker-compose build

logs:查看服務日志輸出

docker-compose logs

port:打印綁定的公共端口

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

start:啟動指定服務已存在的容器

docker-compose start mysql

stop:停止已運行的服務的容器

docker-compose stop mysql

rm:刪除指定服務的容器

docker-composermmysql

scale:設置指定服務運氣容器的個數,以 service=num 形式指定

docker-compose mysql user=3 movie=3

run:在一個服務上執行一個命令

docker-compose run web bash

up:構建、啟動容器

docker-compose up

注意:

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

docker-compose -f my-compose.yml up

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

? 若是要后臺運行,加上-d

docker-compose up -d

kill:通過發送 SIGKILL 信號來停止指定服務的容器

docker-composekillmysql

pull:下載服務鏡像

docker-compose pull mysql:lasted

二、docker-compose.yaml文件屬性

Docker Compose 的 yaml 文件有著嚴格的縮進和空格要求,一般來說,它主要由以下幾個部分構成:

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

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

再者是網絡(Networks),這部分負責定義應用程序的網絡配置。可以創建自定義網絡,并明確容器連接到哪個網絡上,以實現容器之間的順暢通信

還有卷(Volumes),該部分定義了應用程序的卷掛載配置。可以指定容器與宿主機之間文件或目錄的映射關系,從而實現數據的持久化和共享。

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

同時,端口映射(Port Mapping)也不可或缺,在服務的配置中,可以利用 ports 字段來明確容器端口與宿主機端口之間的映射關系,以此實現從宿主機訪問容器內運行的服務。

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

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

Compose文與和Docker的兼容性:

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

version

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

services

用來表示 compose 需要啟動的服務。

image

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

container_name

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

environment

此節點下的信息會當作環境變量傳入容器。

ports

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

restart

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

volumes

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

depends_on

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

build

用來構建指定路徑的Dockerfile文件以及args參數

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

webapp服務將會通過./my_dir目錄下的Dockerfile-alternate文件構建容器鏡像。
如果你同時指定image和build,則compose會通過build指定的目錄構建容器鏡像,而構建的鏡像名為image中指定的鏡像名和標簽。
image: webapp:tag
這將由./dir構建的名為webapp和標記為tag的鏡像。

image

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

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

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

volumes

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

volumes:
# 只需指定一個路徑,讓引擎創建一個卷
-/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詳解:

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

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

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

links

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

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

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

external_links

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

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

restart

設置容器重啟策略

# 默認策略,在任何情況下都不會重啟容器
restart:"no"
# 容器總是在停止后重新啟動
restart:always
# 容器非正常退出時,退出狀態非0才會重啟 
restart:on-failure
# 指定容器退出后的重啟策略為始終重啟,但是不考慮在Docker守護進程啟動時就已經停止了的容器
restart:unless-stopped

network_mode

設置網絡模式

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

networks

配置容器連接的網絡,引用頂級 networks 下的條目 。

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

注意:
aliases :同一網絡上的其他容器可以使用服務名稱或此別名來連接到對應容器的服務。

expose

暴露端口,但不映射到宿主機,只被連接的服務訪問。 僅可以指定內部端口為參數。

expose:
-"3000"
-"8000"

ports

暴露端口信息。 常用的簡單格式:使用宿主機:容器(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:容器內的端口
published:物理主機的端口
protocol:端口協議(tcp或udp)
mode:host 和ingress 兩種模式,host用于在每個節點上發布主機端口,ingress 用于被負載平衡的swarm模式端口。

pid

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

pid:"host"

container_name

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

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

environment

配置環境變量

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 文件內容示例:

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 文件
    +關注

    關注

    1

    文章

    577

    瀏覽量

    25125
  • 容器
    +關注

    關注

    0

    文章

    504

    瀏覽量

    22319
  • 命令
    +關注

    關注

    5

    文章

    722

    瀏覽量

    22631
  • Docker
    +關注

    關注

    0

    文章

    503

    瀏覽量

    12538

原文標題:開發者必備:Docker Compose 常用命令與屬性全指南

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Docker常用命令大全

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

    docker常用命令有哪些?

    docker常用命令Docker鏡像相關Docker容器相關Docker倉庫相關
    發表于 11-06 06:48

    windowsxp常用命令

    windowsxp常用命令   winver---------檢查windows版本 wmimgmt.msc----打開windows管理體系結構(wmi) wupdmgr-------
    發表于 01-10 09:05 ?1340次閱讀

    Ubuntu常用命令大全

    Ubuntu常用命令大全,包括常用管理目錄,系統命令,硬盤相關,內存相關,查看進程等命令
    發表于 01-06 11:16 ?0次下載

    vim常用命令

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

    redis常用命令總結

    本文是對redis常用命令總結。
    發表于 02-09 11:25 ?1665次閱讀

    linux常用命令手冊

    linux常用命令手冊免費下載。
    發表于 06-01 14:59 ?68次下載

    Memcache系統常用命令講解

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

    linux常用命令大全

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

    DOS系統常用命令

    介紹了DOS系統的常用命令
    發表于 03-21 14:59 ?0次下載

    Linux常用命令

    Linux常用命令
    的頭像 發表于 01-12 11:19 ?1287次閱讀

    Linux常用命令手冊分享

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

    詳解kubectl常用命令

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

    docker-compose配置文件內容詳解以及常用命令介紹

    。 使用 docker-compose.yml 定義構成應用程序的服務,這樣它們可以在隔離環境中一起運行。 最后,執行 docker-compose up 命令來啟動并運行整個應用程序。 二、
    的頭像 發表于 12-02 09:29 ?3578次閱讀
    <b class='flag-5'>docker-compose</b>配置文件內容詳解以及<b class='flag-5'>常用命令</b>介紹

    Docker常用命令大全

    Docker 是一種開源的應用容器引擎,廣泛應用于開發、部署和運行分布式應用。掌握 Docker 常用命令對于開發人員和運維人員來說非常重要。本文將為大家整理常用
    的頭像 發表于 04-22 12:47 ?147次閱讀
    主站蜘蛛池模板: 三级成人网 | 国产18到20岁美女毛片 | 国产精品伦理久久久久 | 天天爱天天干天天操 | 欧美系列在线观看 | 你懂的免费 | 亚洲精品日韩专区silk | 亚洲爱v| 美女扒开内裤无遮挡禁18 | 大喷水吹潮magnet | 一区二区三区免费视频网站 | 天天操天天添 | 与子乱刺激对白在线播放 | 伊人久久大香线蕉电影院 | 男人的j桶女人的j视频 | 午夜黄色福利视频 | 久久久久免费精品国产小说 | 特黄日韩免费一区二区三区 | 五月婷婷激情五月 | 女人午夜啪啪性刺激免费看 | 91大神亚洲影视在线 | 日韩精品无码一区二区三区 | 久久香蕉精品视频 | 爱婷婷视频在线观看 | 91在线网| 日本午夜片 | 看免费视频| 欧美一区二区三区免费 | 大美女久久久久久j久久 | 免费男女视频 | bt磁力在线搜索 | 你懂的网址在线观看 | 美女扒尿口给男人桶到爽 | 免费在线黄网站 | 亚洲日本三级 | 成人在线一区二区三区 | 欧美xxxxbbbb| 国产成人影院在线观看 | 免费爱爱视频网站 | 亚洲国产成人久久精品影视 | 精品国产综合区久久久久99 |