一、常见镜像命令

# 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

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

 

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐