docker-compose-語法使用安裝說明
首先安裝docker
關閉防火墻
systemctl stop firewalld
yum安裝依賴
yum install -y yum-utils device-mapper-persistent-data lvm2
下載docker-ce.repo源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
安裝docker
yum install -y docker-ce docker-ce-cli containerd.io
啟動
systemctl start docker.service
systemctl enable docker.service
編輯/etc/docker/daemon.json
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://mirrors.tuna.tsinghua.edu.cn",
"http://mirrors.sohu.com",
"https://ustc-edu-cn.mirror.aliyuncs.com",
"https://ccr.ccs.tencentyun.com",
"https://docker.m.daocloud.io",
"https://docker.awsl9527.cn"
]
}
EOF
重啟docker
systemctl restart docker.service
然后安裝docker-compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
設置權限
sudo chmod +x /usr/local/bin/docker-compose 查看版本 docker-compose -version 啟動 docker-compose start -d或者docker-compose up -d
如果你想利用docker-compose安裝mysql等內容 你需要了解語法規則
docker-compose.yml 配置文件語法
注意:如果在compose中配置nework請注意幾個參數,默認配置network bridge的時候執行compose會自動創建
如果有已存容器內網絡,需要增加參數,具體如下
網絡優先于容器
Docker Compose 會自動處理依賴關系,但需顯式聲明網絡。網絡必須在容器啟動前存在(Compose 會自動創建網絡,若需使用外部網絡則需提前創建)
networks: # 頂層網絡聲明
my-bridge:
driver: bridge # 指定橋接驅動
name: my-custom-bridge # 可選:自定義網絡名稱(否則自動生成)
attachable: true # 允許其他容器后期加入
2. 啟動順序邏輯
Compose 自動處理順序:
運行 docker-compose up 時,Compose 按以下順序執行:
創建網絡(如 my-bridge)
啟動容器(web 和 db 同時加入該網絡)
驗證順序:
查看網絡和容器狀態:
docker network ls | grep my-custom-bridge # 網絡已存在
docker inspect my-container-id | grep NetworkMode # 容器使用該網絡
關鍵場景處理
場景1:依賴外部預創建網絡
若需使用已存在的橋接網絡(非 Compose 自動創建):
networks:
external-bridge:
external: true # 聲明外部網絡
name: existing-bridge # 必須與已存在網絡名稱一致
docker-compose配置文件
version:'3.8' #指定compose版本
services: #服務
web: #服務名稱
image: nginx:latest #使用docker hub上的nginx鏡像
ports:- "80:80" #將容器的80端口映射到宿主機的80端口上
volumes:
- ./html:/usr/share/nginx/html #掛載宿主機 html目錄到容器的/usr/share/nginx/html
network:
- mynet1 #使用自定義網絡橋接網絡
depends_on:
- db #web 依賴于db服務
db: #服務名稱
image: mysql:latest #使用docker hub上的mysql鏡像
environment:
POSTGRES_PASSWORD: 123456 #設置環境變量 可以多設置
volume:
- db-data: /var/lib/mysql/data #掛載數據卷
network:
- mynet1 #使用自定義網絡mynet1
restart: always #容器異常總重啟
#---------------------------------------以下為全局變量設置
volumes
db-data: #定義數據卷 db-data
networks:
mynet1 #自定義網絡mynet1
driver: bridge # 使用bridge驅動
version:指定 Compose 文件格式的版本,確保與你的 Docker Compose 版本兼容。
services:每個服務都定義了一個容器,可以包含鏡像、端口映射、卷掛載、網絡配置、環境變量等。
ports:將容器端口映射到宿主機的端口。格式為 "宿主端口:容器端口"。
volumes:掛載卷到容器,可以是宿主機路徑或命名卷。格式為 "宿主機路徑:容器路徑" 或 "卷名:容器路徑"。
networks:定義容器間的網絡,可以是自定義網絡或使用默認的網絡。
depends_on:指定服務間的依賴關系,確保依賴的服務先啟動。
environment:設置環境變量。
restart:設置容器的重啟策略,如 always 表示在退出時總是重啟容器。
volumes 和 networks 部分在頂層定義全局卷和網絡,也可以在服務內部單獨定義。
通過這樣的配置文件,你可以輕松地啟動和管理多容器的 Docker 應用程序。
其他具體案例

docker-compose命令


浙公網安備 33010602011771號