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 ...