本節(jié)所講內(nèi)容:
創(chuàng)新互聯(lián)專注于黔西南州網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供黔西南州營(yíng)銷型網(wǎng)站建設(shè),黔西南州網(wǎng)站制作、黔西南州網(wǎng)頁(yè)設(shè)計(jì)、黔西南州網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造黔西南州網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供黔西南州網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
實(shí)驗(yàn)環(huán)境: 一個(gè)還原到之前安裝了docker的虛擬機(jī)快照:
?
Docker的4種網(wǎng)絡(luò)模式
1、Docker有以下4種網(wǎng)絡(luò)模式:
host模式,使用--net=host指定。
container模式,使用--net=container:NAME_or_ID指定。
none模式,使用--net=none指定。
bridge模式,使用--net=bridge指定,默認(rèn)設(shè)置。
默認(rèn)選擇bridge的情況下,容器啟動(dòng)后會(huì)通過(guò)DHCP獲取一個(gè)地址,這可能不是我們想要的,在centos7系統(tǒng)上, docker環(huán)境下可以使用pipework腳本對(duì)容器分配固定IP(這個(gè)IP可以是和物理機(jī)同網(wǎng)段IP)。
注: docker 默認(rèn)是bridge(--net=bridge)模式,相當(dāng)于VMware中NAT模式。
docker環(huán)境下可以使用pipework腳本對(duì)容器分配固定IP,相當(dāng)于VMware中橋接模式。
注:Pipework有個(gè)缺陷,容器重啟后IP設(shè)置會(huì)自動(dòng)消失,需要重新設(shè)置。
配置橋接網(wǎng)絡(luò):
橋接本地物理網(wǎng)絡(luò)的目的,是為了局域網(wǎng)內(nèi)用戶方便訪問(wèn)docker實(shí)例中服務(wù),不要需要各種端口映射即可訪問(wèn)服務(wù)。 但是這樣做,又違背了docker容器的安全隔離的原則,工作中辯證的選擇.
創(chuàng)建橋設(shè)備:
安裝包:
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/bridge-utils-1.5-9.el7.x86_64.rpm
把ens33綁到br0橋設(shè)備上:
[root@xuegod63 ~]# cd /etc/sysconfig/network-scripts/
[root@xuegod63 network-scripts]# cp ifcfg-ens33 /opt/ #備份一下eth0
[root@xuegod63 network-scripts]# vim ifcfg-ens33#編輯配置文件為以下內(nèi)容
[root@xuegod63 network-scripts]# vim ifcfg-ens33
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="ens33"
UUID="7a556ff6-f865-4549-b08f-9e526c9bb638"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.1.63" #刪除這些IP地址相關(guān)內(nèi)容
PREFIX="24"
GATEWAY="192.168.1.1"
DNS1="8.8.8.8"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_PRIVACY="no"
BRIDGE="br0" #在文件最后插入這一行
生成橋設(shè)備br0的配置文件:
[root@xuegod63 network-scripts]# vim ifcfg-br0 #創(chuàng)建ifcfg-br0 文件,并寫入以下內(nèi)容
DEVICE="br0"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO=none
IPADDR=192.168.1.63
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
注:TYPE="Bridge" B要大寫。 不大寫也可以。
[root@xuegod63 network-scripts]# service network restart
Restarting network (via systemctl): [ 確定 ]
測(cè)試br0:
root@xuegod63 network-scripts]# ifconfig
[root@xuegod63 network-scripts]# ping g.cn
PING g.cn (203.208.37.20) 56(84) bytes of data.
64 bytes from 203.208.37.20: icmp_seq=1 ttl=57 time=12.3 ms
下載pipework 包
方法1:直接下載pipework zip包
https://github.com/jpetazzo/pipework
把pipework-master.zip上傳到Linux中
擴(kuò)展:
方法2:使用git獲得:
git下載鏈接:https://github.com/jpetazzo/pipework
下載pipework工具:https://github.com/jpetazzo/pipework.git
[root@xuegod63 ~]# rpm -qf `which git`
git-1.8.3.1-5.el7.x86_64
[root@xuegod63 ~]# cd /opt/
[root@xuegod63 opt]# git clone https://github.com/jpetazzo/pipework.git
咱們使用方法1:
將 pipework-master.zip上傳xuegod63上:
[root@xuegod63 ~]# unzip pipework-master.zip # 不需要編譯,因?yàn)閜ipework 是一個(gè)shell腳本
查看:
[root@xuegod63 ~]# vim ./pipework-master/pipework
[root@xuegod63 ~]# cp /root/pipework-master/pipework /usr/local/bin/ #方便后期使用pipework命令
到此 pipework已經(jīng)安裝成功。
啟動(dòng)docker:
[root@xuegod63 ~]# systemctl start docker
把centos-lastest-docker-image.tar 鏡像上傳Linux上,并導(dǎo)入docker平臺(tái)
[root@xuegod63 ~]# docker load -i centos-lastest-docker-image.tar
使用靜態(tài)IP啟動(dòng)一個(gè)docker實(shí)例
例:以none模式,使用--net=none 啟動(dòng)一個(gè)容器,并且開啟docker特權(quán)模式。
[root@xuegod63 ~]# docker run -itd --net=none --privileged=true centos bash
e4698f625a56661edd2678269215ba42d4fa41c2da881768a741a72b4a3d0c60
擴(kuò)展:
--privileged=true? #允許開啟特權(quán)功能
privileged [?pr?v?l?d?d]
在docker 0.6版以后,privileged被引入docker。使用該參數(shù),container內(nèi)的root擁有真正的root權(quán)限。否則,container內(nèi)的root只是外部物理機(jī)的一個(gè)普通用戶權(quán)限。
使用privileged啟動(dòng)的容器,可以看到很多host上的設(shè)備,并且可以執(zhí)行mount。甚至允許你在docker容器中啟動(dòng)docker容器。不啟用privileged,容器中root用戶不能執(zhí)行mount。
擴(kuò)展: 測(cè)試privileged 特權(quán)功能 可以:1
1、未設(shè)置privileged啟動(dòng)的容器:
[root@localhost ~]# docker run -it centos:latest bash
[root@65acccbba42f /]# ls /dev #可以看到的設(shè)備文件比較少
console fd full fuse kcore null ptmx pts random shm stderr stdin stdout tty urandom zero
[root@00931099722f /]# mount -o bind /etc /opt/
mount: permission denied
而在物理機(jī)是可以掛載成功的:
[root@xuegod63 ~]# mount -o bind /etc /opt/
[root@00931099722f /]# exit
2、使用privileged啟動(dòng)的容器
[root@xuegod63 ~]# docker run -it --privileged centos:latest bash
[root@4a51d0fde3ce /]# ls /dev/ #可以看到很多設(shè)備文件
[root@4a51d0fde3ce /]# mount -o bind /etc /opt/ #可以掛載成功
[root@4a51d0fde3ce /]# mount /dev/sda1 /opt/ #可以掛載物理機(jī)上的sda1分區(qū)
[root@4a51d0fde3ce /]# ls /opt/
[root@4a51d0fde3ce /]# init 0 #不行,還是使用exit退出docker
Couldn't find an alternative telinit implementation to spawn.
[root@4a51d0fde3ce /]# exit
對(duì)開特權(quán)模式的docker實(shí)例有了解:1 沒(méi)有:2
直接吸收:80%的技術(shù)! 拿個(gè)本紙
擴(kuò)展結(jié)束,接著給容器配置地址
[root@xuegod63 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e4698f625a56 centos "bash" 30 seconds ago Up 27 seconds suspicious_colden
可以看到容器啟動(dòng)的ID ,比如是e4698f625a56
給此容器配置地址
pipework語(yǔ)法:pipework 網(wǎng)橋名 容器實(shí)例ID 分配給容器的IP/掩碼@網(wǎng)關(guān)
[root@xuegod63 ~]# pipework br0 c88c4c7f01f9 192.168.1.71/24@192.168.1.1
測(cè)試IP:
[root@xuegod63 ~]# ping 192.168.1.71 #可以看到docker實(shí)例的IP已經(jīng)可以使用
PING 192.168.1.71 (192.168.1.71) 56(84) bytes of data.
64 bytes from 192.168.1.71: icmp_seq=1 ttl=64 time=0.639 ms
[root@xuegod63 ~]# docker inspect 容器實(shí)例ID #查看容器的詳細(xì)情況
進(jìn)入容器,測(cè)試網(wǎng)絡(luò):
[root@xuegod63 ~]# docker exec -it 87fadc0249a9 /bin/bash #進(jìn)入容器
[root@6e38ee3f9672 /]# cat /etc/resolv.conf
# Generated by NetworkManager
search xuegod63.cn
nameserver 114.114.114.114
[root@e4698f625a56 /]# yum install -y net-tools #安裝ifconfig命令
[root@e4698f625a56 /]# ifconfig
eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.71 netmask 255.255.255.0 broadcast 192.168.1.255
[root@e4698f625a56 /]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth2
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
到此,docker實(shí)例配置靜態(tài)IP成功。
實(shí)戰(zhàn)1: 使用靜態(tài)IP啟動(dòng)的docker實(shí)例運(yùn)行,一個(gè)web服務(wù)器
[root@1e1db6c6c17c ~]# yum install httpd -y #安裝
[root@1e1db6c6c17c ~]# systemctl start httpd #這個(gè)方式,無(wú)法啟動(dòng)
[root@1e1db6c6c17c ~]# httpd #直接運(yùn)行 httpd命令
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::a0be:f1ff:feeb:484. Set the 'ServerName' directive globally to suppress this message
[root@1e1db6c6c17c ~]# netstat -antup | grep 80 #發(fā)現(xiàn)80已經(jīng)監(jiān)聽
[root@1e1db6c6c17c ~]# cd /var/×××w/html/ #
[root@1e1db6c6c17c ~]# echo aaaaa > index.html
查看結(jié)果即可
總結(jié):
1、創(chuàng)建一個(gè)br0橋接設(shè)備
2、下載pipework 包并安裝
3、安裝并運(yùn)行docker
4、導(dǎo)入centos docker 鏡像
5、啟動(dòng)一個(gè)docker實(shí)例 注意加參數(shù): --net=none --privileged=true
6、使用pipework 給docker實(shí)例配置IP
本文名稱:配置docker靜態(tài)IP地址
網(wǎng)頁(yè)鏈接:http://jinyejixie.com/article30/poesso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站設(shè)計(jì)、App設(shè)計(jì)、軟件開發(fā)、搜索引擎優(yōu)化、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)