上面已經(jīng)將原本在一個容器中運行的服務(wù)分拆到多個容器,每個容器只運行單一服務(wù)。這樣一來容器之間需要能互相通信。Docker容器間通訊的方法有兩種,一種是像上文這樣將容器端口綁定到一個本地端口,通過端口通訊。另一種則是通過Docker提供的Linking功能,在開發(fā)環(huán)境下,通過Linking通信更加靈活,也能避免端口占用引起的一些問題,比如可以通過下面的方式將Nginx和PHP鏈接起來:
docker run -p 9000:9000 -v ~/opt:/opt --name php -it eva/php
docker run -p 80:80 -v ~/opt:/opt -it --link php:php eva/nginx
在一般的PHP項目中,Nginx需要鏈接PHP,而PHP又需要鏈接MySQL,Redis等。為了讓容器間互相鏈接更加容易管理,Docker官方推薦使用Docker-Compose完成這些操作。
用一行指令完成安裝
pip install -U docker-compose
然后在Docker項目的根目錄下準備一個docker-compose.yml文件,內(nèi)容為:
nginx:
build: ./nginx
ports:
- "80:80"
links:
- "php"
volumes:
- ~/opt:/opt
php:
build: ./php
ports:
- "9000:9000"
links:
- "mysql"
- "redis"
volumes:
- ~/opt:/opt
mysql:
build: ./mysql
ports:
- "3306:3306"
volumes:
- ~/opt/data/mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: 123456
redis:
build: ./redis
ports:
- "6379:6379"
然后運行docker-compose up
,就完成了所有的端口綁定、掛載、鏈接操作。
更多建議: