本次測(cè)試使用Deepin OS(Kernel base debian)虛擬機(jī)
測(cè)試鏡像(images):
-
sqli-labs
-
Nignx
-
Tomcat
1. 使用同一個(gè)鏡像邮绿,啟動(dòng)多次耻姥,創(chuàng)建多次容器后削茁,新創(chuàng)建的容器對(duì)象的狀態(tài)不受舊容器狀態(tài)影響名惩。(即容器操作不會(huì)影響原始鏡像從而導(dǎo)致新創(chuàng)建的容器是否受到影響的問(wèn)題)
測(cè)試鏡像Sqli-labs
第一次啟動(dòng)sqli-labs(映射端口8081):需要配置數(shù)據(jù)庫(kù)信息,需要?jiǎng)?chuàng)建security
數(shù)據(jù)庫(kù)
進(jìn)入鏡像中創(chuàng)建
security
數(shù)據(jù)庫(kù)完成后,即可正常使用第二次啟動(dòng)sqli-labs(映射端口8082)出現(xiàn)重置
首次
錯(cuò)誤理解
: image 與 container 的關(guān)系是 container1操作會(huì)影響至對(duì)應(yīng)image,從而導(dǎo)致用image創(chuàng)建新的container2痹籍,會(huì)與container1保持相同結(jié)論:image與container不會(huì)因?yàn)槠渲心骋粋€(gè)container操作導(dǎo)致image創(chuàng)建的其他container受到影響
猜測(cè):即使刪除image若不刪除container,該container可隨時(shí)啟動(dòng)
本例使使用命令匯總
docker search sqli-labs
docker pull sqli-labs
docker run -d -it -p 8081:80 sqli-labs
docker exec -it containerID /bin/bash
(sqli-labs)>mysql -u root -p
(sqli-labs)>create database security;
(sqli-labs)>Ctrl+P+Q
docker run -d -it -p 8082:80 -p 8083:3306 sqli-labs
docker ps -a
2. Image刪除與Container刪除的關(guān)系
測(cè)試鏡像Nginx
首先 啟動(dòng)創(chuàng)建Nginx容器晦鞋,并可以成功對(duì)Nginx進(jìn)行訪問(wèn)
其次 進(jìn)行宿主機(jī)查看image與container狀態(tài)
再次 對(duì)Nginx鏡像刪除并查看Container狀態(tài)
root@sccc-PC:/home/sccc# docker rmi nginx
Error response from daemon: conflict: unable to remove repository reference "nginx" (must force) - container 7973c0eb8d59 is using its referenced image 0e901e68141f
本以為是container未停止的原因蹲缠,所以停止后直接刪除image,也是不可以鏡像刪除
root@sccc-PC:/home/sccc# docker rmi nginx
Error response from daemon: conflict: unable to remove repository reference "nginx" (must force) - container 7973c0eb8d59 is using its referenced image 0e901e68141f
結(jié)論:container無(wú)論運(yùn)行或停止?fàn)顟B(tài)都依賴(lài)于image的存在悠垛,若不先對(duì)container進(jìn)行刪除线定,則就無(wú)法刪除對(duì)應(yīng)的image本例使使用命令匯總
本例使使用命令匯總
docker search nginx
docker pull nginx
docker run -d -it -p 8804:80 nginx
docker exec -it containerID /bin/bash
docker images
docker rmi nginx
docker stop nginx(ContainerID)
docker rmi nginx
docker inspect nginx(ContainerID)
docker rm nginx(ContainerID)
docker rmi nginx
如果不對(duì)容器進(jìn)行停止,則無(wú)法直接刪除容器
docker rm 7973c0eb8d59
Error response from daemon: You cannot remove a running container 7973c0eb8d5993e80e04ad4a4e322f4b7675ba9e1693bc928e28ad7c3560dbb6. Stop the container before attempting removal or force remove
3. Container使用過(guò)程中的一些其他坑點(diǎn)
測(cè)試鏡像Tomcat
- 鏡像閹割問(wèn)題(默認(rèn)的tomcat頁(yè)面不存在鼎文,需要進(jìn)行拷貝處理)
首先 打開(kāi)后進(jìn)行訪問(wèn)發(fā)現(xiàn)出現(xiàn)Not Found 404并沒(méi)有出現(xiàn)Tomcat首頁(yè)問(wèn)題
無(wú)法找到Tomcat主頁(yè)后,進(jìn)行docker中查看配置文件因俐,查看根路徑位置
查詢(xún)到根路徑后拇惋,進(jìn)入文件夾發(fā)現(xiàn)為空文件周偎,所以會(huì)出現(xiàn)Not Found,有相同名稱(chēng)文件夾,查看發(fā)現(xiàn)是備份文件撑帖,進(jìn)行copy進(jìn)根路徑文件夾蓉坎,再次進(jìn)行訪問(wèn)
本例使使用命令匯總
docker search tomcat #搜索鏡像
docker pull tomcat #下拉鏡像
docker run -d -it -p 8800:80 tomcat #端口映射
docker exec -it ContainerID /bin/bash #進(jìn)入容器終端
(tomcat)find / -name tomcat #查找tomcat文件夾位置
(tomcat)cat tomcat/conf/server.xml #查看服務(wù)器配置文件,查看網(wǎng)站根目錄
(tomcat)cp -r webapps.dist/ webapp/ #拷貝文件夾至根目錄
(tomcat)rm -r webapp/*
(tomcat)cp -r webapps.dist/* webapp/ #拷貝文件夾文件至根目錄
-
命令缺失問(wèn)題
針對(duì)查詢(xún)IP方法匯總:
(tomcat) ifconfig #失效
(tomcat) ip addr #失效
(tomcat) hostname -i
(docker) docker inspect ContainerID
最后使用docker cp命令可以對(duì)容器的文件copy至宿主機(jī)
docker cp a6958e3f749f:/var/www/html/sql-connections/db-creds.inc ./