本次测试使用Deepin OS(Kernel base debian)虚拟机
测试镜像(images):
-
sqli-labs
-
Nignx
-
Tomcat
1. 使用同一个镜像,启动多次,创建多次容器后,新创建的容器对象的状态不受旧容器状态影响。(即容器操作不会影响原始镜像从而导致新创建的容器是否受到影响的问题)
测试镜像Sqli-labs
第一次启动sqli-labs(映射端口8081):需要配置数据库信息,需要创建security
数据库
进入镜像中创建
security
数据库完成后,即可正常使用
第二次启动sqli-labs(映射端口8082)出现重置
首次
错误理解
: image 与 container 的关系是 container1操作会影响至对应image,从而导致用image创建新的container2,会与container1保持相同
结论:image与container不会因为其中某一个container操作导致image创建的其他container受到影响
猜测:即使删除image若不删除container,该container可随时启动
本例使使用命令汇总
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删除的关系
测试镜像Nginx
首先 启动创建Nginx容器,并可以成功对Nginx进行访问
其次 进行宿主机查看image与container状态
再次 对Nginx镜像删除并查看Container状态
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
结论:container无论运行或停止状态都依赖于image的存在,若不先对container进行删除,则就无法删除对应的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
如果不对容器进行停止,则无法直接删除容器
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使用过程中的一些其他坑点
测试镜像Tomcat
- 镜像阉割问题(默认的tomcat页面不存在,需要进行拷贝处理)
首先 打开后进行访问发现出现Not Found 404并没有出现Tomcat首页问题
无法找到Tomcat主页后,进行docker中查看配置文件,查看根路径位置
查询到根路径后,进入文件夹发现为空文件,所以会出现Not Found,有相同名称文件夹,查看发现是备份文件,进行copy进根路径文件夹,再次进行访问
本例使使用命令汇总
docker search tomcat #搜索镜像
docker pull tomcat #下拉镜像
docker run -d -it -p 8800:80 tomcat #端口映射
docker exec -it ContainerID /bin/bash #进入容器终端
(tomcat)find / -name tomcat #查找tomcat文件夹位置
(tomcat)cat tomcat/conf/server.xml #查看服务器配置文件,查看网站根目录
(tomcat)cp -r webapps.dist/ webapp/ #拷贝文件夹至根目录
(tomcat)rm -r webapp/*
(tomcat)cp -r webapps.dist/* webapp/ #拷贝文件夹文件至根目录
-
命令缺失问题
针对查询IP方法汇总:
(tomcat) ifconfig #失效
(tomcat) ip addr #失效
(tomcat) hostname -i
(docker) docker inspect ContainerID
最后使用docker cp命令可以对容器的文件copy至宿主机
docker cp a6958e3f749f:/var/www/html/sql-connections/db-creds.inc ./