docker-compose
- 一、compose概述
- 二、YAML簡介
- 1、YAML概述
- 2、YAML的基本語法規則
- 3、YAML支持的資料結構
- 三、安裝compose
- 1、docker compose常用命令
- 2、docker compose配置常用欄位
- 3、compose命令說明
- 四、使用docker-compose構建nginx鏡像
- 1、部署docker-compose環境
- 2、使用dockerfile定義應用程式的環境
- 3、使用docker-compose.yml定義構成應用程式的服務
- 4、執行docker-compose up命令來啟動并運行整個應用程式
- 5、測驗
一、compose概述
(1)compose是一個用于定義及允許多個docker容器的工具,主要是通過一個YAML檔案進行服務配置
(2)使用Docker Compose不再需要使用Shell腳本來啟動容器
(3)Docker Compose非常適合使用多個容器進行開發的場景
二、YAML簡介
1、YAML概述
YAML(語言)的設計目標,就是方便人類讀寫,實質上是一種通用的資料串化格式
2、YAML的基本語法規則
(1)大小寫敏感
(2)使用縮進表示層級關系
(3)縮進時不允許使用Tab鍵,只允許使用空格
(4)縮進的空格數目不重要,只要相同層級的元素左側對齊即可
注:#表示注釋
3、YAML支持的資料結構
(1)物件,鍵值對的集合
(2)陣列,一組按次序排列的值,又稱序列
(3)純量,單個的,不可再分的值
三、安裝compose
注:在部署docker-compose前,需要先部署docker環境
下載docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
1、docker compose常用命令
| 欄位 | 描述 |
|---|---|
| build | 重新構建服務 |
| ps | 列出容器 |
| up | 創建和啟動容器 |
| exec | 在容器里面執行命令 |
| scale | 指定一個服務容器啟動數量 |
| top | 顯示容器行程 |
| logs | 查看容器輸出 |
| down | 洗掉容器、網路、資料卷和鏡像 |
| stop/start/restart | 停止/啟動/重啟服務 |
2、docker compose配置常用欄位
| 欄位 | 描述 |
|---|---|
| build docker context | 指定Dokcerfile檔案名構建鏡像背景關系路徑 |
| image | 指定鏡像 |
| command | 執行命令,覆寫默認命令 |
| container name | 指定容器名稱,由于容器名稱是唯一的,如果指定自定義名稱,則無法scale |
| environment | 添加環境變數 |
| networks | 加入網路 |
| ports | 暴露容器埠,與-p相同,但不能低于60 |
| volumes | 掛載宿主機路徑或命令卷 |
| restart | 重啟策略,默認no,always,no-failure,unless-stoped |
| hostname | 容器主機名 |
3、compose命令說明
(1)基本的使用格式
docker-compose [options] [COMMAND] [ARGS…]
(2)docker-compose選項
-verbose 輸出更多除錯資訊
-version 列印版本并退出
-f , -file FILE 使用特定的compose模板檔案,默認為docker-compose.yml
-p , -project-name NAME 指定專案名稱,默認使用目錄名稱
(3)docker compose環境準備
[root@docker ~]# curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose '//在Linux上我們可以從GitHub上下載它的二進制包來使用,此命令是下載Docker Compose的當前穩定版本'
[root@docker ~]# chmod +x /usr/local/bin/docker-compose
[root@docker ~]# docker-compose -v
docker-compose version 1.21.1, build 5a3f1a3
(4)docker compose檔案結構舉例(docker-compose.yml)
注:compose版本號、服務標識必須頂格寫
屬性名與屬性值以冒號加空格分隔開
層級使用兩個空格表示
服務屬性使用- (空格空格-空格)表示
四、使用docker-compose構建nginx鏡像
1、部署docker-compose環境
[root@docker ~]# curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose '//在Linux上我們可以從GitHub上下載它的二進制包來使用,此命令是下載Docker Compose的當前穩定版本'
[root@docker ~]# chmod +x /usr/local/bin/docker-compose
[root@docker ~]# docker-compose -v
docker-compose version 1.21.1, build 5a3f1a3

2、使用dockerfile定義應用程式的環境
[root@docker ~]# mkdir -p /compose_nginx/nginx '//創建目錄'
[root@docker ~]# cd /compose_nginx/nginx
[root@docker nginx]# rz -E '//上傳nginx原始碼包'
rz waiting to receive.
[root@docker nginx]# ls
nginx-1.12.2.tar.gz
[root@docker nginx]# vim Dockerfile
FROM centos:7
MAINTAINER build image nginx <gcc>
RUN yum -y update
RUN yum -y install gcc gcc-c++ pcre* make cmake zlib-devel openssh* net-tools lsof telnet passwd vim
ADD nginx-1.12.2.tar.gz /usr/local/src
RUN useradd -M -s /sbin/nologin nginx
WORKDIR /usr/local/src/nginx-1.12.2
RUN (./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module)
RUN make && make install
ENV PATH /usr/local/nginx/sbin/:$PATH
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf '//指關閉守護行程啟動'
CMD ["nginx"]


3、使用docker-compose.yml定義構成應用程式的服務
cd ..
vim docker-compose.yml
version: '3'
services:
nginx:
hostname: nginx
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- 1216:80
- 1217:443
networks:
- cluster
networks:
cluster:
tree ./
./
├── docker-compose.yml
└── nginx
├── Dockerfile
└── nginx-1.12.2.tar.gz


4、執行docker-compose up命令來啟動并運行整個應用程式
docker-compose -f docker-compose.yml up -d '//指定ocker-compose.yml檔案來啟動'
docker-compose ps '//compose編排工具成功創建容器'
docker ps -a '//容器創建成功'
docker images 鏡像創建成功

5、測驗

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/271294.html
標籤:其他
