docker config
- 這個命令是用在 Docker Swarm 環境下
- 你可以將你的應用程式容器需要的靜態檔案/設定檔,透過 docker config create 存到 Manager Node 上。
- 當你的應用程式容器在 Worker Nodes 上部署運行時,可以將這些 config 檔案掛載到容器之中
- 它跟 Volume 的差異,在於 Volume 的掛載是無法跨 Nodes,除非每個 Nodes 都去掛載網路磁碟(smb/nfs/…)
指令表
指令 | Description | 說明 |
---|---|---|
docker config create | Create a config from a file or STDIN | 從 STDIN 或是應用程式設定檔來建立 config |
docker config inspect | Display detailed information on one or more configs | 顯示 config 的詳細資訊(其中包含檔案被base64編碼的內容) |
docker config ls | List configs | 條列 Manager Node 上的 config |
docker config rm | Remove one or more configs | 刪除指定的 config |
用實例離說明:
部署簡單的 php 程式到 Worker Node web
- 建立簡單的 php 程式檔案作為首頁 index.php,用來驗證部署結果
<?php
// 獲取伺服器的 IP 地址
$server_ip = $_SERVER['SERVER_ADDR'];
// 顯示在網頁上
echo "伺服器的 IP 地址是: " . $server_ip;
phpinfo()
?>
- 建立 apache 虛擬主機設定檔 ~/000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@official.company.com
ServerName official.company.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- 以 apache 虛擬主機設定檔 000-default.conf,在 Docker Swarm Manager Node 上,建立 config
docker config create apache_vhost ./000-default.conf
- 列出 config,確認一下
docker config ls
- 檢查一下 apache vhost config 詳細資訊,你會發現,設定檔內容以 base64 編碼,存在 Data 中
docker config inspect apache_vhost
- 驗證一下apache_vhost config內容
docker config inspect apache_vhost | jq -r '.[0].Spec.Data' | base64 --decode
- 驗證一下 index.php config內容
docker config inspect official_homepage | jq -r '.[0].Spec.Data' | base64 --decode
- 編寫 docker-compose.yml
version: '3.8'
services:
php_apache:
image: php:7.1-apache
deploy:
replicas: 1
placement:
constraints: [node.labels.server == web]
configs:
- source: official_homepage
target: /var/www/html/index.php
uid: '33'
gid: '33'
mode: 0444
- source: apache_vhost
target: /etc/apache2/sites-available/000-default.conf
networks:
- my_network
configs:
official_homepage:
external: true
apache_vhost:
external: true
networks:
my_network:
driver: overlay
- 執行 odcker stack deploy 進行部署
docker stack deploy -c docker-compose.yml official_homepage
10. 檢查一下,看看 config 是不是都被容器掛載到對應的路徑
docker ps -a
docker exec -it 6476ac33e359 cat /var/www/html/index.php
docker exec -it 6476ac33e359 cat /etc/apache2/sites-available/000-default.conf
- 從上圖可以看到, php:7.1-apache 被部署到 server 標籤為 web 的 node (lab2)
- index.php 與 000-default.conf 也都被掛載到正確的路徑下了
0 意見:
張貼留言