docker基礎之compose檔案結構以及安裝工具(實例詳解)
本篇文章為大家帶來了docker中compose的相關知識,其中包含了compose檔案結構以及安裝docker compose工具的相關知識,希望對大家有幫助。
什麼是docker compose?
docker compose是一個容器編排功能,將運行在不同容器中的不同伺服器進行編排,聯合在一起。
可以用於對多數容器進行統一管理:包括但不限於:網路、連接埠、掛載等可以用於實現容器的叢集化,相關於容器、鏡像的一系列操作,compose都可以進行操作,就是一個管理容器的功能
一、compose檔案結構
1、yml檔案
compose中檔案結構通常是指yml檔案的結構,那什麼是yml檔?
yml檔案是一種鍵值對格式的檔案。
yml檔案對於格式非常的敏感,需要注意以下幾個事項:
- 只識別空格進行的縮排,不識別tab鍵的縮排形式
- 通常開頭部分縮排兩個空格
- 字元後面縮排一格空格,包括但不限於:冒號、逗號、橫槓等這些字元。字符後面必須縮排一格
- 支援使用#來進行註釋
- 如果包含特殊字符,需要使用單引號引用起來
- 布林值必須使用引號括起來
例如:
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选项:
- –verbose:输出更多调试信息
- –version:打印版本并退出
- -f /–file FILE:使用特定的compose模板文件,默认为docker-compose.yml
- -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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

退出 Docker 容器的四種方法:容器終端中使用 Ctrl D 快捷鍵容器終端中輸入 exit 命令宿主機終端中使用 docker stop <container_name> 命令宿主機終端中使用 docker kill <container_name> 命令(強制退出)

Docker 中將文件拷貝到外部主機的方法:使用 docker cp 命令:執行 docker cp [選項] <容器路徑> <主機路徑>。使用數據卷:在主機上創建目錄,在創建容器時使用 -v 參數掛載該目錄到容器內,實現文件雙向同步。

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

重啟 Docker 容器的方法:獲取容器 ID(docker ps);停止容器(docker stop <container_id>);啟動容器(docker start <container_id>);驗證重啟成功(docker ps)。其他方法:Docker Compose(docker-compose restart)或 Docker API(參考 Docker 文檔)。

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]

查看 Docker 日誌的方法包括:使用 docker logs 命令,例如:docker logs CONTAINER_NAME使用 docker exec 命令運行 /bin/sh 並查看日誌文件,例如:docker exec -it CONTAINER_NAME /bin/sh ; cat /var/log/CONTAINER_NAME.log使用 Docker Compose 的 docker-compose logs 命令,例如:docker-compose -f docker-com
