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