后续更新不再此项目中,更改到mygentoo
docker利用主机资源跑rootfs
下载一个docker image来验证(后续会用gentoo制作任何镜像)
docker pull alpine
将这个docker镜像保存在本地并导出其rootfs
docker save -o alp.tar alpine:latest
tar xvf alp.tar //可以发现有个目录,这个目录中有个文件layer.tar
tar xvf layer.tar -C rootfs //解压这个layer.tar到rootfs目录
现在来逆向docker镜像的过程(将这个rootfs打包成一个docker镜像)
写一个Dockerfile内容如下
FROM scratch
COPY rootfs /
ENTRYPOINT ["/bin/sh"]
执行命令生成docker镜像
docker build . -t myimage
测试运行生成的docker镜像
docker run -it --rm myimage
下载基础image
docker pull centos:centos7
查看系统中的image
docker images
交互式运行image,运行起来后就叫container
docker run -it --name myctos centos:centos7
查看当前container情况
docker ps -l
删除container
docker rm myctos
后台运行container
docker run -d -it --name myctos centos:centos7
查看某个container后进入执行
docker ps -l
docker exec -it myctos bash
docker exec -it myctos sh # 有些容器中没有bash
后台运行容器(并挂在本地目录share2docker到container中的mnt下)
docker run -d --network host -it -v /home/anonymous/share2docker/:/mnt --name mysamba centos:centos7
开启全部container
docker start $(docker ps -q)
停止全部container
docker stop $(docker ps -q)
删除全部container
docker rm $(docker ps -aq)
执行相应操作
docker exec mysamba sed -i 's/keepcache=0/keepcache=1/' /etc/yum.conf
docker exec mysamba yum update -y
docker exec mysamba yum install -y python3 samba
将容器改动提交成镜像
docker commit -m 'samba,python3' mysamba samba:v1
将镜像保存到本地
docker save -o sambaimage.tar samba:v1
删除当前已经存在的镜像
docker rmi -f samba:v1
使用时将本地镜像导出即可
docker load < sambaimage.tar
通过制作的镜像启动容器
docker run -d -it --name sambademo -p 139:139 -p 445:445 samba:v1
进入容器添加用户
docker exec -it sambademo bash
# smbpasswd -a root
使用pdbedit查看容器里samba用户
docker exec samba pdbedit -L
启动samba服务
docker exec sambademo smbd
docker exec sambademo nmbd
下载nginx的docker镜像
docker pull nginx
创建对应的容器,映射本地端口999到container里的80端口(path-to-html下时html的网页文件)
docker run -d --name web -p 999:80 -v /path-to-html-dir:/usr/share/nginx/html nginx
在浏览器中访问ip:999即可
docker run -d --name myprometheus -p 9090:9090 -v /path-cotain-prometheus.yml:/etc/prometheus prom/prometheus:v2.30.0
docker run -d --name mygrafana -p 3000:3000 --name gfn grafana/grafana
使用Dockerfile制作相应的镜像
docker build -t xspice:v0.1 .
其中Dockerfile里
RUN 后面的操作会在制作镜像时自动执行
CMD 后面的操作会在启动镜像时执行
启动容器进入后安装一个图形界面的软件(tuxmath)用于验证测试
docker run -it -p 5901:5900 --name xspicetst xspice:v0.1
dnf install -y tuxmath && tuxmath
使用spice客户端进行连接
remote-viewer spice://localhost:5901
docker image: qemu-user-static
在x86机器上运行arm64的docker镜像,先下载对应的镜像
docker pull arm64v8/centos:7
下载qemu static的镜像
docker pull multiarch/qemu-user-static
注册各个平台的可执行程序接口
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
在x86机器上运行arm的docker镜像
docker run --platform=linux/arm64/v8 -it arm64v8/centos:7
编译相关的rootfs
ROOT=/tmp/rootfs emerge busybox
Dockerfile内容如下
FROM scratch
COPY rootfs /
ENTRYPOINT ["/bin/busybox", "sh"]
打包生成docker镜像
docker build . -t mybusybox
测试生成的镜像
docker run -it --rm mybusybox