docker基礎(chǔ)之compose文件結(jié)構(gòu)以及安裝工具(實例詳解)

本篇文章給大家?guī)砹?a >docker中compose的相關(guān)知識,其中包括了compose文件結(jié)構(gòu)以及安裝docker compose工具的相關(guān)知識,希望對大家有幫助。

docker基礎(chǔ)之compose文件結(jié)構(gòu)以及安裝工具(實例詳解)

什么是docker compose?

docker compose是一個容器編排功能,將運行在不同容器中的不同服務器進行編排,聯(lián)合在一起。

可以用于對多數(shù)容器進行統(tǒng)一管理:包括但不限于:網(wǎng)絡、端口、掛載等可以用于實現(xiàn)容器的集群化,相關(guān)于容器、鏡像的一系列操作,compose都可以進行操作,就是一個對于容器進行管理的功能

一、compose文件結(jié)構(gòu)

1、yml文件

compose中文件結(jié)構(gòu)通常是指yml文件的結(jié)構(gòu),那什么是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文件名構(gòu)建鏡像上下文的路徑
images 指定鏡像
command 執(zhí)行命令,覆蓋默認命令
container name 指定容器名稱,由于容器名稱是唯一的。如果指定自定義名稱,則是無法創(chuàng)建scale
deploy 指定部署和運行服務相關(guān)配置,只能再Swarm模式使用
environment 添加環(huán)境變量
networks 加入網(wǎng)絡
ports 暴露容器端口,與-p相同,但是端口號必須大于60
volumts 掛載宿主機路徑或者命令卷
restart 重啟策略,默認no,always, on-failure,unless-stoped
hostname 容器主機名

build:構(gòu)造一個鏡像時候的一個定義方式

dockerfile:方式是使用dockerfile的方式構(gòu)建

context:服務docerfile文件的路徑

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

command:執(zhí)行一個語句

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

#副本集:將一個鏡像制作成多個容器,這多個容器之間,運行環(huán)境等方面都是一模一樣。當容器架構(gòu)中的一個容器掛掉之后,可以直接啟動一個相同的容器,用以保持副本集的數(shù)量,這是副本集的概念,同樣也是K8s的核心。可以提高微服務的速度,提高容災,高并發(fā)性能

deploy:是一個控制器,在k8s中是控制管理副本集的一個插件

restart:一種重啟策略,默認是關(guān)閉之后不啟動,如果always則是不管是手動關(guān)閉還是非手動關(guān)閉,都會自動把關(guān)閉狀態(tài)的容器啟動,unless-stoped只拉取關(guān)閉狀態(tài)的容器,on-failure,只會啟動容器返回碼非零的容器

3、Compose在外部的常用命令

字段 描述
build 重新構(gòu)建一個鏡像信息
ps 列出容器當前docker compose所控制的容器
up 創(chuàng)建以及啟動容器
exec 在容器內(nèi)執(zhí)行命令
scale 指定一個服務器的啟動數(shù)量,相當于副本集的數(shù)量
top 顯示容器進程,所有docker compose控制的進程啟動的容器
logs 查看容器的輸出信息
down 刪除容器、網(wǎng)絡、數(shù)據(jù)卷和鏡像
stop/start/restart 停止/啟動/重啟容器服務

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

docker-compose選項

  1. –verbose:輸出更多調(diào)試信息
  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

首次連接下載的時候,可能會提示失誤或者連接不上,可能是因為網(wǎng)絡原因,可以多試幾次

2、添加權(quán)限

文件在剛下載之后,默認是沒有執(zhí)行權(quán)限的,所以需要手動添加執(zhí)行權(quán)限

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

3、運行docker-compose

docker-compose

可以看到,現(xiàn)在已經(jīng)正常執(zhí)行了

三、編譯鏡像

手動創(chuàng)建下面的文件(dockerfile文件之前有的話,直接拉取過來也是可以的)

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

其中yml文件內(nèi)部

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文件中就是自己配置的網(wǎng)頁信息,就不多做介紹了

確定之后,編譯

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

查看運行結(jié)果

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

訪問網(wǎng)址端口,查看該網(wǎng)站頁面

curl 192.168.75.51:666 hello #顯示結(jié)果 cat ./wwwroot/index.html hello

推薦學習:《docker視頻教程

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊10 分享