遭遇の間ドッカーコンテナのネットワーク通信の問題
インストールでDocker
のLinux
入力ip addr
には、検索の指名したdocker0
ネットワークデバイス間のネットワーク通信をし、コンテナがホストに依存していますdocker0
** [理解]変更docker0ネットワークセグメント(CentOS6。*)**
sudo ifconfig docker0 192.168.200.1 netmask 255.255.255.0
コンテナドッカー間のネットワーク接続
docker
デフォルトでは、ネットワーク接続がそのような容器へのようにすべてのコンテナとの間にすることができる可能にすることであるping
別の容器IP
ができるping
ことはできるが、合格ping
合格、誰が使用していないIP
互いに容器を行うための方法を。
もちろん、それは起動時に追加することができます--link
間のコンテナにパラメータhosts
マッピング。原理はのコンテナであるhosts
別のコンテナファイルの追加ip
エイリアスを対応します。しかし、このアプローチは必要と厳格なブートシーケンスコンテナを、そのようなアプローチをされて正式に推奨されませんで。
使用して、Docker Compose
これらの問題を解決することができます。
ドッカー作曲
Docker Compose
位置「は、複数を定義して実行することであるDocker
別を通じてユーザーを可能にする、アプリケーション・コンテナ」docker-compose.yml
(テンプレートファイルYAML
(プログラムの関連するコンテナのアプリケーションフォーマットのセットを定義します)project
)。
方言は:Docker Compose
することができyaml
、自動的にすべての設定ファイルの手配yaml
、自分の書く必要がなくなり、構成ファイルを介して容器のサービス構成をdocker
退屈で時間のかかる作業してコマンドを。
Docker Compose
マウンティング
Docker Compose
使用しyml
、次の(デフォルトのファイル名などのファイルのルックスをdocker-compose.yml
)
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
その後、コマンドを使用してdocker-compose up
の束入力することなく構築し、それを実行するためdocker
のトラブルのコマンドを
yaml
その他の設定:
docker compose
コマンドがたくさんあります:
経験の例を通してDocker Compose
目的:使用構築するためのブログHalo
ミラーとNginx
ミラーリングネットワークインターワーキング
version: '3'
services:
halo:
restart: always # Docker重启的时候要重新启动容器
image: ruibaby/halo
container_name: halo
volumes:
- ~/cyblogs/.halo:/root/.halo
nginx:
restart: always
image: nginx
container_name: nginx-server
ports:
- 80:80
- 443:443 # HTTPS端口
volumes:
- ~/cyblogs/.halo/html:/root/html/.halo # 如果容器中不存在这个文件夹会自动创建
- ~/cyblogs/nginx/cert:/root/cert # HTTPS使用的SSL证书
- ~/cyblogs/nginx/logs:/var/log/nginx # 日志文件的映射
- ~/cyblogs/nginx/conf/nginx.conf:/etc/nginx/nginx.conf # 配置文件的映射
確認するには、次のコマンドを実行しyml
、ファイル形式が正常です
docker-compose -f /root/cyblogs/docker-compose.yml config
あなたは、ファイルの正確元の内容をプリントアウトした場合は、ファイル形式は、エラーを説明していません。
そして、スケジュールを開始するには、次のコマンドを実行します。
docker-compose -f /root/cyblogs/docker-compose.yml up -d
どこ-d
とdocker run
されている-d
バックグラウンドで実行されていると同じ
首尾よく使用して整理した後exec
だけに、コンテナに行くコマンドをhalo
たとえば、コンテナ
docker exec -it halo /bin/sh
次に、実行ping
コマンドを:
ping nginx
今回は見つけることができるping
上、との使用を必要としないIP
アドレスを、およびサービス名を使用します。
Nginx
構成:
# 配置halo.xxx.com的映射
upstream halo {
server halo:8090;
}
# 备用 为*.xxx.com做映射
server {
listen 80;
server_name ~^.*xxx\.com$;
location / {
root /root/html/.halo;
index index.html index.htm;
}
}
# 配置halo.xxx.com的SSL证书
server {
listen 80;
listen 443 ssl;
server_name halo.xxx.com;
root html;
index index.html index.htm;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
ssl_certificate /root/cert/halo.xxx.com.pem;
ssl_certificate_key /root/cert/halo.xxx.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://halo;
}
}
Nginx
プロファイルはまた、上記のプロファイルとしてリバースプロキシを行うために直接「サービス名」の方法を使用することができますserver halo:8090;