docker安裝
安裝前準(zhǔn)備:
1缘琅、禁用 selinux [SELINUX=disabled]
2宦棺、卸載防火墻 [yum -y remove firewalld-*]
3、將 docker 軟件包上傳到跳板機(jī)
4永票、準(zhǔn)備 2 臺(tái) 2cpu,2G內(nèi)存的云主機(jī)
主機(jī)名 | IP地址 | 最低配置 |
---|---|---|
docker-0001 | 192.168.1.31 | 2CPU,2G內(nèi)存 |
docker-0002 | 192.168.1.32 | 2CPU,2G內(nèi)存 |
跳板機(jī)yum源添加docker軟件
[root@ecs-proxy ~]# cp -a docker /var/ftp/localrepo/
[root@ecs-proxy ~]# cd /var/ftp/localrepo/
[root@ecs-proxy localrepo]# createrepo --update .
在 node 節(jié)點(diǎn)驗(yàn)證軟件包
[root@docker-0001 ~]# yum makecache
[root@docker-0001 ~]# yum list docker-ce*
以下操作所有 node 節(jié)點(diǎn)都需要執(zhí)行
開(kāi)啟路由轉(zhuǎn)發(fā)
[root@docker-0001 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@docker-0001 ~]# sysctl -p
[root@docker-0001 ~]# yum install -y docker-ce
[root@docker-0001 ~]# systemctl enable --now docker
[root@docker-0001 ~]# ifconfig # 驗(yàn)證,能看見(jiàn) docker0
[root@docker-0001 ~]# docker version # 驗(yàn)證蚯妇,沒(méi)有報(bào)錯(cuò)
鏡像管理&容器管理
docker鏡像管理命令
鏡像管理命令 | 說(shuō)明 |
---|---|
docker images | 查看本機(jī)鏡像 |
docker search 鏡像名稱 | 從官方倉(cāng)庫(kù)查找鏡像 |
docker pull 鏡像名稱:標(biāo)簽 | 下載鏡像 |
docker push 鏡像名稱:標(biāo)簽 | 上傳鏡像 |
docker save 鏡像名稱:標(biāo)簽 -o 備份鏡像名稱.tar | 備份鏡像為tar包 |
docker load -i 備份鏡像名稱 | 導(dǎo)入備份的鏡像文件 |
docker rmi 鏡像名稱:標(biāo)簽 | 刪除鏡像(必須先刪除該鏡像啟動(dòng)的所有容器) |
docker history 鏡像名稱:標(biāo)簽 | 查看鏡像的制作歷史 |
docker inspect 鏡像名稱:標(biāo)簽 | 查看鏡像的詳細(xì)信息 |
docker tag 鏡像名稱:標(biāo)簽 新的鏡像名稱:新的標(biāo)簽 | 創(chuàng)建新的鏡像名稱和標(biāo)簽 |
以下操作須在一臺(tái)可以訪問(wèn)互聯(lián)網(wǎng)的機(jī)器上執(zhí)行:
#查找busybox鏡像
[root@docker-0001 ~]# docker search busybox
#下載鏡像
[root@docker-0001 ~]# docker pull busybox:latest
#查看本機(jī)鏡像
[root@docker-0001 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 69593048aa3a 3 weeks ago 1.24MB
#上傳鏡像
[root@docker-0001 ~]# docker push busyboxnew:latest
#備份鏡像為tar包
[root@docker-0001 ~]# docker save busybox:latest -o busybox.tar
#導(dǎo)入備份的鏡像文件
[root@docker-0001 ~]# docker load -i busybox.tar
#刪除鏡像(必須先刪除該鏡像啟動(dòng)的所有容器)
[root@docker-0001 ~]# docker rmi busybox:latest
# 查看鏡像的詳細(xì)信息
[root@docker-0001 ~]# docker inspect busybox:latest
# 查看鏡像的歷史信息
[root@docker-0001 ~]# docker history busybox:latest
# 給鏡像添加新的名詞和標(biāo)簽
[root@docker-0001 ~]# docker tag busybox:latest newname:newtag
docker容器管理命令
容器管理命令 | 說(shuō)明 |
---|---|
docker run -it(d) 鏡像名稱:標(biāo)簽 啟動(dòng)命令 | 創(chuàng)建啟動(dòng)并進(jìn)入一個(gè)容器,后臺(tái)容器使用參數(shù) d |
docker ps | 查看容器 -a 所有容器暂筝,包含未啟動(dòng)的箩言,-q 只顯示id |
docker rm 容器ID | -f 強(qiáng)制刪除,支持命令重入 |
docker start|stop|restart 容器id | 啟動(dòng)乖杠、停止分扎、重啟容器 |
docker cp 本機(jī)文件路徑 容器id:容器內(nèi)路徑 | 把本機(jī)文件拷貝到容器內(nèi)(上傳) |
docker cp 容器id:容器內(nèi)路徑 本機(jī)文件路徑 | 把容器內(nèi)文件拷貝到本機(jī)(下載) |
docker inspect 容器ID | 查看容器的詳細(xì)信息 |
docker attach 容器id | 進(jìn)入容器的默認(rèn)進(jìn)程,退出后容器會(huì)關(guān)閉 |
docker attach 容器id [ctrl+p, ctrl+q] | 進(jìn)入容器以后胧洒,退出容器而不關(guān)閉容器的方法 |
docker exec -it 容器id 啟動(dòng)命令 | 進(jìn)入容器新的進(jìn)程畏吓,退出后容器不會(huì)關(guān)閉 |
docker run** 啟動(dòng)一個(gè)新的容器 -i 交互式,-t 終端卫漫, -d 在后臺(tái)啟動(dòng)
# 在后臺(tái)啟動(dòng)容器
[root@docker-0001 ~]# docker run -itd nginx:latest
9cae0af944d81770c90fdeacf7a632aaa749b0c9fbc0f4cb104e1d1257579e5e
# 在前臺(tái)啟動(dòng)容器
[root@docker-0001 ~]# docker run -it --name myos centos:latest /bin/bash
[root@de46e6254efd /]# ctrl+p, ctrl+q # 使用快捷鍵退出菲饼,保證容器不關(guān)閉
# 查看正在運(yùn)行的容器
[root@docker-0001 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED
de46e6254efd centos:latest "/bin/bash" 2 minutes ago
9cae0af944d8 nginx:latest "nginx -g 'daemon of…" 7 minutes ago
# 只查看id
[root@docker-0001 ~]# docker ps -q
# 查看所有容器,包含未啟動(dòng)的
[root@docker-0001 ~]# docker ps -a
# 啟動(dòng)列赎、停止宏悦、重啟容器
[root@docker-0001 ~]# docker start de46e6254efd
[root@docker-0001 ~]# docker stop 9cae0af944d8
[root@docker-0001 ~]# docker restart 9cae0af944d8
# 刪除容器
[root@docker-0001 ~]# docker rm -f de46e6254efd
# 刪除所有容器
[root@docker-0001 ~]# docker rm -f $(docker ps -aq)
# 進(jìn)入容器的默認(rèn)進(jìn)程
[root@docker-0001 ~]# docker attach de46e6254efd
[root@de46e6254efd /]# exit # 退出后容器會(huì)關(guān)閉
# 查看容器詳細(xì)信息
[root@docker-0001 ~]# docker inspect 9cae0af944d8
... ...
"IPAddress": "172.17.0.2",
... ...
[root@docker-0001 ~]# curl http://172.17.0.2/
# 進(jìn)入容器,查看路徑
[root@docker-0001 ~]# docker exec -it 9cae0af944d8 /bin/bash
root@9cae0af944d8:/# cat /etc/nginx/conf.d/default.conf
... ...
root /usr/share/nginx/html;
... ...
# 從容器內(nèi)拷貝首頁(yè)文件到宿主機(jī)包吝,修改后拷貝回容器內(nèi)
[root@docker-0001 ~]# docker cp 9cae0af944d8:/usr/share/nginx/html/index.html ./index.html
[root@docker-0001 ~]# vim index.html
Hello Guodong
Hello Guodong
Hello Guodong
[root@docker-0001 ~]# docker cp ./index.html 9cae0af944d8:/usr/share/nginx/html/index.html
[root@docker-0001 ~]# curl http://172.17.0.2/
注:
docker attach 9cae0af944d8 #一般用于排錯(cuò)
docker exec -it 9cae0af944d8 /bin/bash #用于維護(hù)
容器內(nèi)部署應(yīng)用
[root@docker-0001 ~]# docker rm -f $(docker ps -aq)
[root@docker-0001 ~]# docker run -it --name myapache centos:latest
[root@a7f9d0c3e3e2 /]# rm -f /etc/yum.repos.d/*.repo
#---------------------不要退出這個(gè)終端饼煞,在另一個(gè)終端拷貝 yum 配置文件到容器--------------------
[root@docker-0001 ~]# docker cp /etc/yum.repos.d/CentOS-Base.repo myapache:/etc/yum.repos.d/
#------------------------回到創(chuàng)建容器的終端繼續(xù)執(zhí)行命令--------------------------------------
[root@a7f9d0c3e3e2 /]# yum install -y net-tools httpd
[root@a7f9d0c3e3e2 /]# echo Hello world >/var/www/html/index.html
[root@a7f9d0c3e3e2 /]# export LANG=C
[root@a7f9d0c3e3e2 /]# ifconfig
[root@a7f9d0c3e3e2 /]# /usr/sbin/httpd -DFOREGROUND
# 啟動(dòng)服務(wù)以后 ctrl-p, ctrl-q 退出
[root@docker-0001 ~]# curl http://172.17.0.2/
Hello world
總結(jié):
管理鏡像使用 **名稱:標(biāo)簽**
管理容器使用 **容器ID**