首頁 >運維 >Docker >docker基礎之compose檔案結構以及安裝工具(實例詳解)

docker基礎之compose檔案結構以及安裝工具(實例詳解)

WBOY
WBOY轉載
2022-02-07 17:39:404626瀏覽

本篇文章為大家帶來了docker中compose的相關知識,其中包含了compose檔案結構以及安裝docker compose工具的相關知識,希望對大家有幫助。

docker基礎之compose檔案結構以及安裝工具(實例詳解)

什麼是docker compose?

docker compose是一個容器編排功能,將運行在不同容器中的不同伺服器進行編排,聯合在一起。

可以用於對多數容器進行統一管理:包括但不限於:網路、連接埠、掛載等可以用於實現容器的叢集化,相關於容器、鏡像的一系列操作,compose都可以進行操作,就是一個管理容器的功能

一、compose檔案結構

1、yml檔案

compose中檔案結構通常是指yml檔案的結構,那什麼是yml檔?

yml檔案是一種鍵值對格式的檔案。

yml檔案對於格式非常的敏感,需要注意以下幾個事項:

  1. 只識別空格進行的縮排,不識別tab鍵的縮排形式
  2. 通常開頭部分縮排兩個空格
  3. 字元後面縮排一格空格,包括但不限於:冒號、逗號、橫槓等這些字元。字符後面必須縮排一格
  4. 支援使用#來進行註釋
  5. 如果包含特殊字符,需要使用單引號引用起來
  6. 布林值必須使用引號括起來

例如:

  house:
    family:
      name: Doe
      parents: 
        - John
        - Jane
      children: 
        - Paul
        - Mark
        - Simone
    address: 
      number: 34
      street: Main Street
      city: Nowheretown
      zipcode: 1234

yml檔案格式例如上面,需要進行一級級的對應,不同級之間,有兩個空格的間隔。

註:如果在一個層級中,一個鍵有多個值,可以使用在下一個層級,同樣是空餘兩格,以短橫槓起始,有幾個值寫幾個端橫槓

2、Compose配置常用的欄位

欄位 描述
build dockerfile centext 指定Dockerfile檔名建構鏡像上下文的路徑
images 指定映像
#command 執行指令,覆寫預設指令
#container name 指定容器名稱,由於容器名稱是唯一的。如果指定自訂名稱,則是無法建立scale
#deploy #指定部署和執行服務相關配置,只能再Swarm模式使用
environment 新增環境變數
networks 加入網路
ports 暴露容器端口,與-p相同,但是端口號必須大於60
#volumts 掛載宿主機路徑或命令卷
restart 重啟策略,預設no,always, on-failure,unless-stoped
hostname 容器主機名稱

build:建構一個映像時候的一個定義方式

dockerfile:方式是使用dockerfile的方式建構

context:服務docerfile檔案的路徑

images:可以指定使用的映像名字,例如:images:鏡像名,注意:後面有個空格

command:執行一個語句

container name:用來指定容器的名稱,因為容器名字是唯一的。如果指定自訂名稱,則無法scale(設定副本集)

#副本集:將一個映像製作成多個容器,這多個容器之間,運行環境等方面都是一模一樣。當容器架構中的一個容器掛掉之後,可以直接啟動一個相同的容器,用以保持副本集的數量,這是副本集的概念,同樣也是K8s的核心。可以提高微服務的速度,提高容災,高並發效能

deploy:是一個控制器,在k8s中是控制管理副本集的一個外掛程式

restart:一種重啟策略,預設是關閉之後不啟動,如果always則是不管是手動關閉還是非手動關閉,都會自動把關閉狀態的容器啟動,unless-stoped只拉取關閉狀態的容器,on-failure,只會啟動容器回傳碼非零的容器

3、Compose在外部的常用指令

欄位 描述
build 重新建構一個鏡像資訊
ps 列出容器目前docker compose所控制的容器
up #建立以及啟動容器
exec 在容器內執行指令
scale 指定一個伺服器的啟動數量,相當於副本集的數量
#top 顯示容器進程,所有docker compose控制的進程啟動的容器
logs 查看容器的輸出資訊
down 刪除容器、網路、資料捲和映像
stop/start/restart 停止/啟動/重啟容器服務

docker compose基本使用格式:docker-compose [options] [COMMAND] [ARGS…]

docker-compose选项

  1. –verbose:输出更多调试信息
  2. –version:打印版本并退出
  3. -f /–file FILE:使用特定的compose模板文件,默认为docker-compose.yml
  4. -p /–project-name NAME:指定项目名称,默认使用目录名称

二、安装docker compose工具

1、下载

curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

首次连接下载的时候,可能会提示失误或者连接不上,可能是因为网络原因,可以多试几次

2、添加权限

文件在刚下载之后,默认是没有执行权限的,所以需要手动添加执行权限

chmod +x /usr/local/bin/docker-compos

3、运行docker-compose

docker-compose

可以看到,现在已经正常执行了

三、编译镜像

手动创建下面的文件(dockerfile文件之前有的话,直接拉取过来也是可以的)

tree
.
├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   ├── nginx-1.12.0.tar.gz
└── wwwroot
    └── index.html

其中yml文件内部

cat docker-compose.yml

version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1321:80
      - 1707:443
    networks:
      - cluster
    volumes:
      - ./wwwroot: /usr/local/nginx/html
networks:
  cluster:

nginx的dockerfile文件

cat ./nginx/Dockerfile

FROM centos:7
ADD nginx-1.12.0.tar.gz /tmp
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make &> /dev/null \
    && useradd -M -s /sbin/nologin nginx \
    && cd /tmp/nginx-1.12.0/ \
    && ./configure \
    --prefix=/usr/local/nginx \
    --user=nginx \
    --group=nginx \
    --with-http_stub_status_module &> /dev/null \
    && make &> /dev/null \
    && make install &> /dev/null
VOLUME ["/usr/local/nginx/html"]
EXPOSE 80
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

index.html文件中就是自己配置的网页信息,就不多做介绍了

确定之后,编译

docker-compose -f docker-compose.yml up -d

查看运行结果

docker ps -a

CONTAINER ID   IMAGE                 COMMAND                  CREATED              STATUS                      PORTS                                                                        NAMES
da38007f09ab   dockercompose_nginx   "/usr/local/nginx/sb…"   About a minute ago   Up About a minute           0.0.0.0:666->80/tcp, :::666->80/tcp, 0.0.0.0:667->443/tcp, :::667->443/tcp   dockercompose_nginx_1
#可以看到,这个端口信息就是我们在yml文件中设置的端口信息,直接在这个生效了

docker images

REPOSITORY                TAG       IMAGE ID       CREATED         SIZE
dockercompose_nginx       latest    b1e4b9dfa72d   3 minutes ago   478MB

访问网址端口,查看该网站页面

curl 192.168.75.51:666
hello
#显示结果
cat ./wwwroot/index.html
hello

推荐学习:《docker视频教程

以上是docker基礎之compose檔案結構以及安裝工具(實例詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除