02-Docker新手入門網絡篇

基礎入門之網絡容器篇

Author:zhaojunlike@

Email:zhaojunlike@gmail.com

本篇文章來自於官方基於文檔的指南學習整理

若是英語好的同窗其實能夠看文檔,更加詳細。傳送門

Step1:網絡容器

1.部署一個默認網絡容器

查看網絡列表
#docker network ls
咱們看到咱們有3個network,bridge是一個特殊的網絡,docker默認的在這個網絡中啓動咱們的容器。

Step1:建立一個後臺運行的容器,若是您不瞭解這些命令那麼您能夠回到第一節blog文章裏面查看
#docker run -itd --name=network-test centos
Step2:查看容器的ip地址
#docker network inspect bridge
Step3:從一個網絡中移除一個容器(後面一個參數|the name is faster)
#docker network disconnect bridge [id|name]

咦,好像咱們docker network還不知道有哪些,咱們來help一下

#docker network 
Usage:    docker network COMMAND

Manage Docker networks

Options:
     --help   Print usage

Commands:
 connect     Connect a container to a network(讓一個容器連接一個網絡)
 create      Create a network(建立一個網絡)
 disconnect  Disconnect a container from a network(取消連接)
 inspect     Display detailed information on one or more networks(顯示網絡詳細)
 ls          List networks(網絡列表)
 rm          Remove one or more networks(移除網絡)

Run 'docker network COMMAND --help' for more information on a command.

好,咱們已經知道了網絡的命令咱們來試一試python

2.建立一個網絡

咱們仍是查看一下docker network create --helpnginx

Usage:    docker network create [OPTIONS] NETWORK

Create a network

Options:
     --aux-address value    Auxiliary IPv4 or IPv6 addresses used by Network driver (default map[])
 -d, --driver string        Driver to manage the Network (default "bridge")
     --gateway value        IPv4 or IPv6 Gateway for the master subnet (default [])
     --help                 Print usage
     --internal             Restrict external access to the network
     --ip-range value       Allocate container ip from a sub-range (default [])
     --ipam-driver string   IP Address Management Driver (default "default")
     --ipam-opt value       Set IPAM driver specific options (default map[])
     --ipv6                 Enable IPv6 networking
     --label value          Set metadata on a network (default [])
 -o, --opt value            Set driver specific options (default map[])
     --subnet value         Subnet in CIDR format that represents a network segment (default [])

let's go

建立網絡
#docker network create my-test-d-network
建立一個容器,加入這個網絡
#docker run -d --network=my-test-d-network --name my-network-test-c centos


咱們查看一下剛纔建立的容器的網絡配置web

#docker inspect --format='{{json .NetworkSettings.Networks}}' my-network-test-c

好了,到這兒,咱們去跟着官方實戰一下吧,以前我build了一個已經安裝好了nginx的容器,那麼如今我將使用這個容器去配置。docker

Open a shell into the db application again and try the ping command. This time just use the container name web rather than the IP Address.
#使用容器的名稱,而不使用地址
[root@0037207f115d home]# wget c-test-3

從一個網絡中,移除一個容器

#docker network disconnect [network] [container]

整理一下思路

Step1:建立一個網絡

咱們取個名字叫test-network
[root]#docker network create test-network

Step2:查看建立網絡的信息

[root]#docker network inspect test-network

Step3:建立2個容器

[root]#docker run -dit --name=test-1 centos
[root]#docker run -dit --name=test-2 centos
固然官方也有直接使用一個--network來配置網絡的

Step4:把2個容器加入網絡

咱們先看看幫助
[root]# docker network connect --help
接下來咱們加入2個容器
[root@localhost myDocker]# docker network connect test-network test-1
[root@localhost myDocker]# docker network connect test-network test-2

接下來咱們再查看一下網絡的詳細
[root]#docker network inspect test-network
這樣咱們就肯定了咱們的容器已經加入了這個網絡,咱們看到2個容器在同一個網段裏面,接下來咱們去ping一下

Step5:測試網絡

docker有一個這樣得方法,去運行咱們的容器shell

[root]#docker exec -it test-1 bash
[root]#docker exec -it test-2 bash
咱們是用test-1 ping test-2
這裏咱們不是直接去使用ip地址,而是使用docker的名稱

補充:端口

若是咱們須要將容器的端口給外界訪問,那麼咱們應該去指定一個端口映射,let's gojson

在docker中有一個 port 的命令 ,咱們去help一下
[root]#docker port --help
如圖即是port的映射,咱們去開放咱們的test-1的80端口,隨便映射到一個端口上。

But 好像port指令沒法進行端口的配置,而後咱們來到以前的一個文檔中,看到在run一個鏡像的時候,有一個指定開放端口,咱們去看下centos

尷尬

咱們查看#docker run -helpbash

發佈全部暴露端口隨機端口。
 -P, --publish-all                 Publish all exposed ports to random ports
咱們看官方的提示,可使用p參數進行端口指定
 docker run -d -p 80:5000 training/webapp python app.py

咱們去試一試,如今我去pull了一個nginx的鏡像,接下來咱們去建立一個開放了80端口的容器網絡

[root]#docker run -d -p=9999:80 --name=test-5 nginx 
[root]#docker ps -a


咱們看到已經把centos本機的9999端口 映射到了容器test-5得80端口上,由於test-5上面的nginx已經啓動了,而且在centos 9999得端口已經開放,咱們使用ip去訪問一下這個端口

這樣就說明成功啦,是否是有點小激動。!!app

網絡篇結束,下面是我在學習途中遇到的一些問題而尋找的答案。

Docker run -d:err not running => http://blog.csdn.net/meegomee...
docker port set =>http://blog.csdn.net/libraryh...

相關文章
相關標籤/搜索