docker 搭建環(huán)境記錄(Centos 7)

docker安裝與使用

yum -y install docker

啟動(dòng)docker

systemctl start docker

國(guó)外鏡像網(wǎng)站

https://hub.docker.com/

國(guó)內(nèi)鏡像網(wǎng)站

https://docker.mirrors.ustc.edu.cn

修改鏡像地址

vi /etc/docker/daemon.json

請(qǐng)?jiān)谠撆渲梦募屑尤耄](méi)有該文件的話,請(qǐng)先建一個(gè)):

{

"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]

}

鏡像操作

下載指定鏡像

docker pull 鏡像名字:TAG??


下載最新鏡像(就是letest版本)

docker pull 鏡像名字

?

查看已下載得鏡像

docker images

?

刪除鏡像

docker rmi 鏡像名字:tag? 或者寫id

?

刪除所有鏡像

docker rmi $(docker images -q)

?

導(dǎo)出、導(dǎo)入鏡像

docker save repository:tag/imageId > /root/xx.tar.gz

docker load < /root/xx.tar.gz

?

docker save -o mynginx.tar nginx(要導(dǎo)出得鏡像名字有多個(gè)就加tag nginx:1.16.0,這個(gè)模式不能用ID)

docker load -i mynginx.tar

-o 輸出到的文件

執(zhí)行后,運(yùn)行 ls 命令即可看到打成的 tar 包

-i 輸入的文件

執(zhí)行后再次查看鏡像,可以看到鏡像已經(jīng)恢復(fù)



容器

創(chuàng)建容器

模式1

docker run -i -t --name=my_ngx -v /本地/目錄/:/docker/目錄 -v /本地/目錄1/:/docker/目錄 --privileged=true -p 80:80 --net mynetwork --ip 172.18.0.2 nginx:1.16.0

?

模式2

docker run -di --name=my_ngx -v /本地/目錄/:/docker/目錄 -v /本地/目錄1/:/docker/目錄 --privileged=true -p 80:80 -p 80:80 --net mynetwork --ip 172.18.0.2 nginx:1.16.0

?

-i:表示運(yùn)行容器

?

-t:表示容器啟動(dòng)后會(huì)進(jìn)入其命令行。加入這兩個(gè)參數(shù)后,容器創(chuàng)建就能登錄進(jìn)去。即

分配一個(gè)偽終端。

?

--name :為創(chuàng)建的容器命名。(“=”號(hào)寫不寫都行,我比較習(xí)慣寫上,比較容易分辨)

?

-v:表示目錄映射關(guān)系(前者是宿主機(jī)目錄,后者是映射到宿主機(jī)上的目錄),可以使

用多個(gè)-v 做多個(gè)目錄或文件映射。注意:最好做目錄映射,在宿主機(jī)上做修改,然后

共享到容器上。

?

-d:在 run 后面加上-d 參數(shù),則會(huì)創(chuàng)建一個(gè)守護(hù)式容器在后臺(tái)運(yùn)行(這樣創(chuàng)建容器后不會(huì)

自動(dòng)登錄容器,如果只加-i -t 兩個(gè)參數(shù),創(chuàng)建后就會(huì)自動(dòng)進(jìn)去容器)。

?

-p:表示端口映射,前者是宿主機(jī)端口,后者是容器內(nèi)的映射端口??梢允褂枚鄠€(gè)-p

做多個(gè)端口映射

?

容器操作

進(jìn)入到容器

docker exec -it my_ngx /bin/bash

?

停止

docker stop my_ngx

?

運(yùn)行

docker start my_ngx

?

刪除

docker rm my_ngx

?

組合技

docker ps -a -q

ps:列出當(dāng)前運(yùn)行得容器

-a:列出所有創(chuàng)建得容器

-q:只顯示id(效果是這樣的,具體是不是這個(gè)說(shuō)法……)

docker stop $(docker ps -a -q) 停止所有容器

?

另外有些容器 是啟動(dòng)之后應(yīng)用直接運(yùn)行得,有些需要進(jìn)去啟動(dòng),希望大家別被這個(gè)坑了。

?

關(guān)于docker如何修改已經(jīng)創(chuàng)建得容器端口和目錄:我修改過(guò)端口,目錄沒(méi)有試過(guò)具體操作是先查看容器的ID

到/var/lib/docker/containers/容器id/hostconfig.json


這個(gè)文件里面


可以看到,剛才我們啟動(dòng)容器的時(shí)候,配置的信息都在這。

我先停止了容器和docker,然后修改了這個(gè)文件,再啟動(dòng)。

端口是好使,映射目錄好像不太好用。如果沒(méi)有必要,容器直接刪了重建。

如果需要在鏡像內(nèi)安裝工具

直接運(yùn)行下面得install出錯(cuò),就執(zhí)行update

apt-get update

我用到得幾個(gè)工具

apt-get install procps? docker ps命令

apt-get install vim docker vi命令

apt-get install iputils-ping? ping命令

apt-get install lsof? 看端口占用命令 lsof -i:8080

網(wǎng)絡(luò)方面

如果直接啟動(dòng)的話 ,ip是動(dòng)態(tài)的 ,如果你需要一個(gè)固定ip,那就需要自己創(chuàng)建一個(gè)網(wǎng)關(guān)了

docker network create --subnet=172.18.0.0/16 mynetwork

使用docker network ls 查看

這時(shí)候 固定ip的問(wèn)題解決了 ,但是 還有個(gè)很坑的問(wèn)題。他們之間網(wǎng)絡(luò)是不通的……

此處省略很多心路歷程……

簡(jiǎn)單的說(shuō)就是因?yàn)榫W(wǎng)關(guān)的問(wèn)題,docker 默認(rèn)網(wǎng)關(guān)是172.17.0.1,這時(shí)候如果你想使用這個(gè)網(wǎng)關(guān)的docker容器們,網(wǎng)絡(luò)互通的話,就需要修改docker 默認(rèn)網(wǎng)關(guān)。

emm,按照這個(gè)來(lái)做基本就可以了,為了方便大家閱讀我就直接粘過(guò)來(lái)了。https://blog.csdn.net/tomspcc/article/details/78423068

停止docker

service docker stop

?刪除docker防火墻過(guò)濾規(guī)則

iptables -t nat -F POSTROUTING

?刪除docker默認(rèn)網(wǎng)關(guān)配置

ip link set dev docker0 down

ip addr del 172.17.0.1/16 dev docker0

?增加新的docker網(wǎng)關(guān)配置

ip addr add 172.18.0.1/16 dev docker0

ip link set dev docker0 up

檢測(cè)是否配置成功,如果輸出信息中有 172.18.0.1,則表明成功

ip addr show docker0

service docker start

驗(yàn)證docker防火墻過(guò)濾規(guī)則

iptables -t nat -L -n

上面的 ip后面的數(shù)字16,搜了一下

表示掩碼是16個(gè)1。

11111111.11111111.0000000.0000000

這是2進(jìn)制的掩碼,轉(zhuǎn)化為10進(jìn)制掩碼是255.255.0.0。

修改完之后route -n 顯示的還是之前的網(wǎng)關(guān),但是去到容器里面 已經(jīng)可以相互ping通了

詳細(xì)的網(wǎng)絡(luò)方面可以看看這個(gè)http://www.itdecent.cn/p/d84cdfe2ea86

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容