Docker的使用(五:Docker中的网络与数据管理)
實驗環(huán)境
三臺運行有Ubuntu 16.04 操作系統(tǒng)的虛擬機,并每臺主機中已安裝docker環(huán)境;
學(xué)習(xí)目標
- docker的網(wǎng)絡(luò)管理
- docker Swarm集群的使用
- Volume數(shù)據(jù)卷的使用
實驗內(nèi)容
任務(wù)一:Docker網(wǎng)絡(luò)管理
1、Docker默認網(wǎng)絡(luò)管理
docker安裝時自動創(chuàng)建三種網(wǎng)絡(luò)。客戶端可以通過網(wǎng)絡(luò)管理指令查看。
sudo docker network ls
下面通過一個示例來演示默認的birdge網(wǎng)絡(luò)管理方式
(1)創(chuàng)建并啟動容器
sudo run -itd --name=networktest ubuntu
(2)使用網(wǎng)絡(luò)查看指令查看網(wǎng)絡(luò)詳情
sudo docker network inspect bridge
2、自定義網(wǎng)絡(luò)介紹
(1).Bridge networks(橋接網(wǎng)絡(luò))
(2).Overlay network in swarm mode(Swarm集群中的覆蓋網(wǎng)絡(luò))
(3).Custome network plguins(定制網(wǎng)絡(luò)插件)
3、自定義bridge網(wǎng)絡(luò)
(1)使用如下命令在Docker主機上創(chuàng)建網(wǎng)絡(luò)
docker network create --driver bridge isolated_nw
(2)使用自定義網(wǎng)絡(luò)啟動容器,操作指令如下:
docker run --network=isolated_nw -itd --name=nwtest busybox
(3)為容器添加網(wǎng)絡(luò)管理,操作指令如下:
docker network connect bridge nwtest
(4)斷開容器網(wǎng)絡(luò)連接,操作指令如下:
docker network disconnect isolated_nw nwtest
(5)移除自定義網(wǎng)絡(luò),操作指令如下:
docker network rm isolated_nw
注:此操作在執(zhí)行命令后會返回網(wǎng)絡(luò)名稱。
4、容器之間的網(wǎng)絡(luò)通信
4.1、創(chuàng)建容器
- 創(chuàng)建兩個默認的bridge網(wǎng)絡(luò)的容器,操作指令如下:
sudo docker run -itd --name=container1 busyboxsudo docker run -itd --name=container2 busybox
- 創(chuàng)建一個使用自定義的isolated_nw 網(wǎng)絡(luò)的容器,操作指令如下:
docker run --network=isolated_nw -itd --name=container4 busybox
- 為container2添加一個isolated-nw 網(wǎng)絡(luò)連接,操作指令如下:
docker network connect isolated_nw container2
4.2、容器地址查看
注:首先進入到container2容器,操作指令如下:
docker attach container2
- 使用ifconfig命令查看
- 分別查看其余兩個容器的地址
4.3、容器通信的測試
- 進入容器1,ping容器4
注:網(wǎng)絡(luò)通信失敗,因為容器在不同網(wǎng)絡(luò)環(huán)境下無法通信。
- 進入到容器2中,使用容器的ip地址鏈接容器1余容器4的通信測試;
注:通信測試成功
總結(jié):不同容器必須在同一網(wǎng)絡(luò)環(huán)境下通信。默認網(wǎng)絡(luò)管理的容器可以用ip進行通信,無法用容器名稱通信,而自定義網(wǎng)絡(luò)管理的容器則同時可以使用容器IP和容器名稱進行通信。
?
任務(wù)二、Docker Swarm集群
1、Docker Swarm的使用
1.1、環(huán)境的準備
? ? ? ? ? 注:準備三臺Ubuntu,docker版本1.2以上,ip地址固定,TCP端口2377,7946,4789開放。
? ? ? ? ? ? ? ? ?ip地址如下:
? ? ? ? ? ? ? ? ?manger1:192.168.159.143
? ? ? ? ? ? ? ?? worker1:192.168.159.144
? ? ? ? ? ? ? ? ?worker2:192.168.159.145
- 修改主機名,并添加地址映射
- 網(wǎng)絡(luò)連通性測試
1.2、創(chuàng)建Docker Swarm集群
a)在名為manager1的Docker機器上創(chuàng)建Docker Swarm集群,具體操作指令如下:
docker swarm init --advertise-addr 192.168.159.143
注:生成的指令是用來創(chuàng)建worker節(jié)點的命令
b)在管理節(jié)點使用命令docker node ls查看
1.3、向docker swarm集群上添加工作節(jié)點
a)啟動其余兩臺工作節(jié)點并執(zhí)行如下命令:
docker swarm join --token SWMTKN-1-4yi395mvp9wmi1jcfjas0rzl3t5d1hm84z4yla165fbonaxjzn-0tnvsw84tgp7dtugeeyg8tzem 192.168.159.143:2377
注:--token后的參數(shù)自己生成每個人不一樣
b)再次查看集群節(jié)點信息,操作命令如下:
docker node ls
1.4、向Docker Swarm,操作指令如下:
docker service create --replicas 1 --name helloworld alpine ping docer.com
1.5、查看Docker Swarm集群的服務(wù)
a)使用命令docker service ls查看當前集群中的服務(wù)列表,操作指令如下:
b)查看部署的服務(wù)具體詳情,指令操作如下:
c)查看運行和分配情況,操作指令如下:
1.6、更改docker swarm集群服務(wù)副本數(shù)量
docekr scale helloworld=5
- 查看服務(wù)副本情況
1.7、刪除服務(wù)
對于不需要的服務(wù),進行刪除,會返回服務(wù)名稱,操作指令如下:
docker service rm helloworld
1.8、訪問服務(wù)
注:前面部署的服務(wù)都沒有直接向外界暴露服務(wù)端口,外界也無法正常訪問服務(wù)。以下就通過自定義overlay驅(qū)動網(wǎng)絡(luò)為例來講解集群下的網(wǎng)絡(luò)管理與服務(wù)訪問;
a)在管理節(jié)點上執(zhí)行命令 docker network ls 查看網(wǎng)絡(luò)列表
b)在管理節(jié)點上創(chuàng)建overlay的自定義網(wǎng)絡(luò)。
docker network create \
--driver overlay \
my-multi-host-network
c)在集群管理節(jié)點上,再次部署。
docker service create \
--network my-multi-host-network \
--name my-web \
--publish 8080:80 \
--replicas 2 \
nginx
總結(jié):此處拉取鏡像可能會失敗,或者持續(xù)卡主,解決方法就是,給Docker中配置加速器
解決方案可以看此博文https://blog.csdn.net/qq_37823605/article/details/90666773
d)使用命令 docker service ps my-web 查看服務(wù)副本運行情況
e)外界訪問驗證
注:打開瀏覽器使用任意一臺機器節(jié)點“IP+8080”進行服務(wù)訪問
?
任務(wù)三、Volumes數(shù)據(jù)卷管理
1、創(chuàng)建并管理數(shù)據(jù)卷
1.1、創(chuàng)建數(shù)據(jù)卷
注:通過 docker volume create my-vol 指令創(chuàng)建一個名為my-vol的數(shù)據(jù)卷,操作如下:
1.2、查看數(shù)據(jù)卷
注:通過 docker volume ls?指令查看本地數(shù)據(jù)卷列表,操作如下:
1.3、核查數(shù)據(jù)卷
注:通過 docker volume inspect my-vol?指令查看指定數(shù)據(jù)卷列表,操作如下:
1.4、刪除數(shù)據(jù)卷
注:當不再需要使用數(shù)據(jù)卷后,可以使用docker volume rn 指令刪除指定名稱數(shù)據(jù)卷,操作如下:
2、啟動容器并加載數(shù)據(jù)卷
2.1、查看本機容器和數(shù)據(jù)卷
- 使用指令 docker pa -a 查看
- 使用指令 docker volume ls查看
2.2、確認本機docker文件系統(tǒng)中的容器和數(shù)據(jù)卷
注:首先在Docker主機終端中將普通用戶切換到root用戶中,然后進入“/var/lib/docker”目錄,查看信息;
2.3、啟動容器并掛載數(shù)據(jù)卷
docker run -d \
-it \
--name devtest \
--mount source=myvol,target=/app \
busybox:latest
2.4、再次查看本機容器和數(shù)據(jù)卷列表
2.5、檢查容器詳情
注:使用docker inspect 查看容器詳情
2.6、再次確認本機文件系統(tǒng)中的容器和數(shù)據(jù)卷
注:首先在Docker主機終端中將普通用戶切換到root用戶中,然后進入“/var/lib/docker”目錄,查看信息;
注:從以上圖中可以看出,新建的容器數(shù)據(jù)卷已自啟動生成在本地文件目錄中。
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的Docker的使用(五:Docker中的网络与数据管理)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hive的基本应用
- 下一篇: Docker的使用(docker pul