容器技术和build攻击
一、常见镜像命令
# 1,拉取镜像
docker pull ubuntu:22.04
# 2,推送镜像
docker pull 仓库访问的地址/项目/ubuntu:22.04
# 3,查看
docker images
docker image ls
docker image ls -a
# 4,删除
docker rmi b507dfe58d3f
docker image rm b507dfe58d3f
docker image rm -f b507dfe58d3f
docker image prune -f b507dfe58d3f
# 5,改名
docker tag 原来镜像名:标签 新:新tag
# 6,查看镜像的详细信息
docker image inspect 镜像名:标签
docker inspect 容器名
# 7,保存镜像为压缩包
# 8,导入压缩包为镜像
docker save 镜像名:标签 > xxx.tar.gz
docker load < xxx.tar.gz
二、部署docker容器
1,安装docker
wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.24.tgz #下载
tar xf docker-20.10.24.tgz #解压
chown -R root.root docker #配置
cp docker/* /usr/local/bin/ #将当前目录下 docker 文件夹中的所有内容(非隐藏文件 / 子目录),复制到系统的 /usr/local/bin/ 目录中。
2,配置system启动
# vim /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker-oldboyedu-learn
Documentation=www.oldboyedu.com
After=network-online.target containerd.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/local/bin/dockerd
ExecReload=/bin/kill -HUP $MAINPID
TimeoutSec=0
[Install]
WantedBy=multi-user.target
# systemctl daemon-reload
# systemctl enable --now docker.service
三、配置仓库地址
# vim /etc/docker/daemon.json
{
"registry-mirrors" : ["https://do.nark.eu.org",
"https://dc.j8.work",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"https://do.nark.eu.org",
"https://docker.shootchat.top",
"https://registry.docker-cn.com"]
}
四、开启内核转发功能
# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
# sysctl -p
......
net.ipv4.ip_forward = 1
]# systemctl restart docker.service
五、拉取镜像测试
# docker pull ubuntu:22.04
22.04: Pulling from library/ubuntu
60d98d907669: Pull complete
Digest: sha256:4e0171b9275e12d375863f2b3ae9ce00a4c53ddda176bd55868df97ac6f21a6e
Status: Downloaded newer image for ubuntu:22.04
docker.io/library/ubuntu:22.04
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 22.04 b1dc6972547a 4 weeks ago 77.9MB
alpine latest 9234e8fb04c4 2 months ago 8.31MB
nginx 1.20.1-alpine 7f18bdc92ca5 3 years ago 22.7MB
可以拉取则说明部署成功
六、常见容器命令
#创建容器
docker create --name c2 nginx:1.20.1-alpine
#启动关闭容器
docker start c1 启动
docker stop c1 关闭
#查看
docker ps 查看有什么容器
docker ps -a 查看所有(包括隐藏的)容器
#重启
docker restart c1
#创建并启动容器
docker run -d --name c2 nginx:1.20.1-alpine
#进入容器/容器中执行命令
-d # 后台运行
--name # 设置容器名称
-p # 端口映射
-exec # 进入容器中执行命令
-it # 进入容器分配终端
#分配终端作为守护进程
docker run -d --name c1 alpine:latest
docker run -d -i -t --name c2 alpine:latest()
docker run -d --name c3 alpine:latest tail -f /etc/hosts
#杀死容器
docker kill c1
全部杀死:docker rm -f $(docker ps -aq)
七、build镜像威胁(重点)
#设置下载源
cp /etc/apt/sources.list ./
#创建build
mkdir build
cd build/
# 编辑dockerfile
vim Dockerfile
FROM ubuntu:22.04
COPY ./sources.list /etc/apt/sources.list
RUN apt update && \
apt -y install nginx
CMD ["nginx","-g","daemon off;"]
#构建镜像v1
docker build -t old:v1 .

报错了,但是不用慌,这是因为证书问题,我们把https改为http就好了
vim sources.list

第一次创建过程较慢,耐心等待
#创建好后,构建危险镜像
vim Dockerfile(下面是里面的代码)
FROM ubuntu:22.04
ONBUILD RUN mkdir /oldboy28
CMD ["tail","-f","/etc/hosts"]
#######创建v2镜像
docker run -d --name c2 old:v2 .(这个点是必须要加的)
#模拟引用镜像
vim Dockerfile(下面是里面的代码)
FROM old:v2
RUN mkdir ~/111
CMD ["tail","-f","/etc/hosts"]
#创建v3镜像引用v2,模拟:当有人引用我的镜像为基础镜像时,优先执行里面的命令
docker run -d --name c3 old:v3 .
#然后我们进到c3容器中
docker exec -it c3 bash

发现出现了我们代码中要创建的文件夹,攻击成功,如果执行的命令是删除数据之类的命令后果不堪设想。
更多推荐



所有评论(0)