外部訪(fǎng)問(wèn)
隨機(jī)映射端口
使用 -P 標(biāo)記,Docker會(huì)隨機(jī)映射一個(gè)49000-49900的端口到內(nèi)部容器開(kāi)放的網(wǎng)絡(luò)端口
docker run -d -P training/webapp python app.py
docker ps -l # 顯示最近創(chuàng)建的容器
docker logs -f web # 查看應(yīng)用的信息
映射所有接口地址
docker run -d -p 5000:5000 training/webapp python app.py
映射到指定地址的指定端口
docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
映射到指定地址的任意端口
docker run -d -p 127.0.0.1::5000 training/webapp python app.py
指定udp端口
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
查看映射端口配置
新建一個(gè)docker網(wǎng)絡(luò)
docker network create -d bridge my-net
運(yùn)行容器連接到新建的my-net網(wǎng)絡(luò)
docker run -it --rm --name busybox1 --network my-net busybox sh
docker run -it --rm --name busybox2 --network my-net busybox sh
查看容器信息
docker container ls
容器內(nèi)ping測(cè)試容器是否互聯(lián)
多個(gè)容器互聯(lián) 推薦Docker Compose
配置DNS 宿主機(jī)DNS信息更新后,所有Docker容器的DNS配置通過(guò)/etc/resolv.conf立即更新
配置全部容器的DNS
vim /etc/docker/daemon.json 增加內(nèi)容
{
'dns':[
"114.114.114.114",
"8.8.8.8"
]
}
docker run -it --rm ubuntu:17.10 cat /etc/resolv.conf
容器互聯(lián)
容器的連接系統(tǒng)是除了端口映射外另一種可以與容器中應(yīng)用進(jìn)行交互的方式。
它會(huì)在源和接收容器之間創(chuàng)建一個(gè)隧道,接收容器可以看到源容器指定的信息。
自定義容器名
連接系統(tǒng)根據(jù)容器的名稱(chēng)執(zhí)行,所以需要自定義一個(gè)較為簡(jiǎn)單容易區(qū)分的容器名。
自定義命名使用--name參數(shù),這個(gè)在之前的文章中已經(jīng)遇到過(guò)了:
docker run -d -p --name db mysql
容器的命名必須是唯一的。
執(zhí)行docker run時(shí),如果加上--rm參數(shù),容器在終止后悔立即被刪除,但是不能與-d參數(shù)一同使用。
容器互聯(lián)
使用--link參數(shù)可以讓容器間建立安全的連接進(jìn)行交互。
下面是一個(gè)示例:
首先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)的容器:
docker run -d --name db training/postgres
然后創(chuàng)建web容器:
docker run -d -P --name web --link db:db training/webapp python app.py
此時(shí)db容器和web容器加你互聯(lián)關(guān)系。
--link參數(shù):--link name:alias,name是要連接的容器的名字,alias是這個(gè)連接的別名。
可以使用docker ps查看容器信息,其中names列就能看出互聯(lián)的狀態(tài)。
docker在兩個(gè)互聯(lián)的容器之間建立了一個(gè)安全隧道,不需要吧他們的端口映射到宿主主機(jī)上,也可以避免端口的暴露。
Docker通過(guò)兩種方式公開(kāi)連接信息:
- 環(huán)境變量
- 更新/etc/hosts文件
使用env命令查看剛剛的web容器的環(huán)境變量:
docker run --rm --name web2 --link db:db training/webapp env ...
其中DB_開(kāi)頭的環(huán)境變量是供web容器連接db容器使用,前綴采用大寫(xiě)的連接別名。
除了環(huán)境變量,Docker還添加host信息到父容器的/etc/hosts文件。其中web容器會(huì)以自己的ID作為默認(rèn)主機(jī)名,db容器以db作為主機(jī)名。
比如多個(gè)web到db容器的情況,可以鏈接多個(gè)子容器到父容器上。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。