Docker網路初識

2021-08-19 16:21:20 字數 2959 閱讀 2062

docker 允許通過外部訪問容器或容器互聯的方式來提供網路服務。

一 準備

準備乙個tomcat的docker映象。

這裡就直接通過docker hub查詢乙個既有的映象了。

二 啟動

1 按照老方式啟動

docker run -itd --name mytomcat tomcat

docker ps

可以看出建立了乙個tomcat容器,通過port看出占用了8080埠。

可以使用logs檢視是否正常啟動。

docker logs mytomcat

但是這個8080埠是容器的,外面是無法直接訪問的。

可以使用curl命令測試一下:

curl

整個實踐過程如下:

2 任意埠對映啟動

按照老方式啟動無法訪問容器,但docker可以通過 -p 或 -p 引數來將容器內埠對映到外部主機上。

當使用 -p(大寫的)標記時,docker 會隨機對映乙個埠到內部容器開放的網路埠。

我們再重新啟動tomcat。

docker run -itd -p tomcat

使用 docker ps 可以看到,本地主機的埠32768被對映到了容器的8080埠上。

此時訪問本機的32768埠,即可訪問容器內web應用提供的介面。

整個實踐過程如下:

3 指定埠對映啟動

當使用 -p(小寫的)則可以指定要對映的埠,並且在乙個指定埠上只可以繫結乙個容器。

支援的格式有三種:

hostport:containerport:對映本機所有ip的指定埠。

以三種方式啟動三個容器,tomcat1,tomcat2,tomcat3。

對映本機所有ip的指定埠

docker run -itd --name tomcat1 -p 9527:8080 tomcat

對映指定ip位址的指定埠

docker run -itd --name tomcat2 -p 192.168.0.107:9528:8080 tomcat

對映指定ip位址的任意埠

docker run -itd --name tomcat3 -p 192.168.0.107::8080 tomcat

執行docker ps檢視。

整個實踐過程如下:

對於tomcat1,可以使用192.168.0.107:9527 172.17.0.1:9527 127.0.0.1:9527 192.168.122.1:9257訪問容器中的tomcat。

對於tomcat2,只能使用192.168.0.107:9528訪問。

對於tomcat3,只能使用192.168.0.107:32768訪問。

4 指定多個埠啟動

-p 標記可以多次使用來繫結多個埠

docker run -itd --name tomcat4 -p 192.168.0.107:9530:8080 -p 192.168.0.107:9531:8080 tomcat

5 檢視對映埠配置–docker port

三 容器互聯

在平時開發中,部署應用程式和資料庫通常不會在同一物理主機上,這也是為了安全。

那麼想象一種場景,應用全部通過docker建立,則應用程式和db應該也是分屬於不同的容器。那麼應用程式要訪問db該如何處理?

當然,可以將db的容器埠也是用-p或-p對映出來,但是docker還提供了 –link 引數,可以讓容器之間安全的進行互動。

--link 引數的格式為 --link name:alias,其中 name 是要鏈結的容器的名稱,alias 是這個連線的別名。

同樣的先建立乙個mysql的資料庫映象。

docker pull mysql

建立乙個mysql容器。

docker run --name db_mysql -e mysql_root_password=123456 -d mysql

這裡的-e mysql_root_password=123456是初始化root使用者的密碼。

然後建立乙個新的 tomcat 容器,並將它連線到 db 容器。

docker run -itd -p --name tomcat5 --link db_mysql:db tomcat /bin/bash

進入到容器tomcat5。

docker attach tomcat5

檢視/etc/hosts 檔案的資訊,可以看到新增了db_mysql的資訊,通過ping命令也是可以ping通的。

因為我們在建立tomcat5容器時,也指定db_mysql容器的別名db,所以我們也可以ping通db。

ping db_mysql

ping db

整個實踐過程如下:

Docker 初識Docker網路

我們每啟動乙個docker容器,docker就會給docker容器分配乙個ip,我們只要安裝了docker,就會有乙個網絡卡docker0。一 啟動兩個tomcat容器 root localhost docker run d p name tomcat01 tomcat 啟動映象,生成tomcat0...

docker初識 Docker 初識

一 docker 簡介 docker是乙個開源的應用容器,使用者可以將web程式和服務打包到乙個輕量級 可以移植的容器中,然後發布到任務流行的linux伺服器上,實現虛擬化。同時完全是沙箱操作,即docker內部是乙個沙箱操作,專案之間不會有任何介面,並且開銷極低。二 docker centos 安...

docker初識 初識 Docker

docker 學習 docker概述 docker安裝 docker命令映象命令 容器命令 操作命令 docker映象!容器資料卷!dockerfile docker網路原理 idea整合docker docker compose docker swarm 簡化的k8s ci cd jenkins ...