dockerfile 练习案例
1、Nginx
#nginx安装
FROM centos
MAINTAINER skyhu<71718132@qq.com>
WORKDIR /etc/yum.repos.d/
#修改yum源安装软件
RUN mv * /tmp && curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo && yum install wget vim net-tools nginx -y
EXPOSE 80
#nginx 启动命令
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
docker build -t nginx:v2 .
docker run -d -p 80:80 nginx:v2
2、有一台虚拟机,想要将其转换成一个Docker 镜像。
VMDISK= ” $HOME/Virtua1Box VMs/myvm/myvm.vdi #设置一个环境变量指向用户的虚拟机磁盘镜像
sudo modprobe nbd # 初始化一个qemu-nbd需要的内核模块
sudo qemu-nbd -c /dev/nbd0 -r $VMDISK #磁盘连接到一个虚拟以设备节点
ls /dev/nbdOp* #列出这块磁盘上可以挂载的分区号
dev/nbdOpl /dev/nbd0p2
sudo mount /dev/nbd0p2 /mnt #通过qemu-nbd把选择的分区挂载到/ mnt
sudo tar cf img.tar -C /mnt . #从/mnt 创建出一个名为img.tar的tar文件
sudo umont /mnt && sudo qemu-nbd -d /dev/nbd0 #卸载分区然后用qemu-nbd 清理
要选择挂载的分区的话,可以运行sudo cfdisk /dev/nbd0 来查看可选项.
如果是远程虚拟机 如果用户拿到的是分区转储文件
$ sudo mount -o loop partition.dump /mnt
$ sudo tar cf $(pwd)/img.tar -C /mnt
$ sudo umount /mnt
也可以选择从一个正在运行的系统创建出TAR 文件。在登录到系统后可以轻松实现
这一点:
$ cd /
$ sudo tar cf /img.tar --exclude=/img.tar --one-file-system /
拿到了文件系统的TAR ,便可以将其加到镜像里Dockerfile
FROM scratch #scratch 镜像scratch 镜像是一个零字节虚拟镜像,可以基于此构建其他镜像.一般来说,它适用
于想使用一个Dockerfile 复制(或者添加)一个完整文件系统的情况.
ADD img.tar /
docker build .