Docker 基礎(chǔ)網(wǎng)絡配置詳解
外部訪問
隨機映射端口
使用 -P 標記,Docker會隨機映射一個49000-49900的端口到內(nèi)部容器開放的網(wǎng)絡端口 docker run -d -P training/webapp python app.py docker ps -l # 顯示最近創(chuàng)建的容器 docker logs -f web # 查看應用的信息
映射所有接口地址
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
查看映射端口配置
dokcer port web 5000
新建一個docker網(wǎng)絡
docker network create -d bridge my-net
運行容器連接到新建的my-net網(wǎng)絡
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測試容器是否互聯(lián)
多個容器互聯(lián) 推薦Docker Compose
配置DNS 宿主機DNS信息更新后,所有Docker容器的DNS配置通過/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)是除了端口映射外另一種可以與容器中應用進行交互的方式。
它會在源和接收容器之間創(chuàng)建一個隧道,接收容器可以看到源容器指定的信息。
自定義容器名
連接系統(tǒng)根據(jù)容器的名稱執(zhí)行,所以需要自定義一個較為簡單容易區(qū)分的容器名。
自定義命名使用--name參數(shù),這個在之前的文章中已經(jīng)遇到過了:
docker run -d -p --name db mysql
容器的命名必須是唯一的。
執(zhí)行docker run時,如果加上--rm參數(shù),容器在終止后悔立即被刪除,但是不能與-d參數(shù)一同使用。
容器互聯(lián)
使用--link參數(shù)可以讓容器間建立安全的連接進行交互。
下面是一個示例:
首先創(chuàng)建一個數(shù)據(jù)庫的容器:
docker run -d --name db training/postgres
然后創(chuàng)建web容器:
docker run -d -P --name web --link db:db training/webapp python app.py
此時db容器和web容器加你互聯(lián)關(guān)系。
--link參數(shù):--link name:alias,name是要連接的容器的名字,alias是這個連接的別名。
可以使用docker ps查看容器信息,其中names列就能看出互聯(lián)的狀態(tài)。
docker在兩個互聯(lián)的容器之間建立了一個安全隧道,不需要吧他們的端口映射到宿主主機上,也可以避免端口的暴露。
Docker通過兩種方式公開連接信息:
- 環(huán)境變量
- 更新/etc/hosts文件
使用env命令查看剛剛的web容器的環(huán)境變量:
docker run --rm --name web2 --link db:db training/webapp env ...
其中DB_開頭的環(huán)境變量是供web容器連接db容器使用,前綴采用大寫的連接別名。
除了環(huán)境變量,Docker還添加host信息到父容器的/etc/hosts文件。其中web容器會以自己的ID作為默認主機名,db容器以db作為主機名。
比如多個web到db容器的情況,可以鏈接多個子容器到父容器上。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Docker 數(shù)據(jù)卷,數(shù)據(jù)卷容器詳細介紹
這篇文章主要介紹了 Docker 數(shù)據(jù)卷,數(shù)據(jù)卷容器詳細介紹的相關(guān)資料,這里對Docker 數(shù)據(jù)卷,數(shù)據(jù)卷容器的感念及相關(guān)操作進行了介紹,需要的朋友可以參考下2016-11-11
Docker?link實現(xiàn)容器互聯(lián)的方式
通過link方式創(chuàng)建容器,然后我們可以使用被link容器的別名進行訪問。本文重點給大家介紹Docker?link實現(xiàn)容器互聯(lián)的方式,感興趣的朋友一起看看吧2021-12-12
Docker+Jenkins+Gitee自動化部署maven項目的實現(xiàn)
本文主要介紹了Docker+Jenkins+Gitee自動化部署maven項目的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-06-06
基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持續(xù)集成交付環(huán)境的詳細教程
K8S全稱是Kubernetes,是一個全新的基于容器技術(shù)的分布式架構(gòu)領(lǐng)先方案,這篇文章主要介紹了基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持續(xù)集成交付環(huán)境(環(huán)境搭建篇),對docker K8S持續(xù)集成交付環(huán)境相關(guān)知識感興趣的朋友一起看看吧2021-05-05
Docker報錯Operation?not?permitted問題的解決方法
剛開始接觸Docker的朋友經(jīng)常會遇到問題,下面這篇文章主要給大家介紹了關(guān)于Docker報錯Operation?not?permitted問題的解決方法,需要的朋友可以參考下2023-02-02

