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 .

标签: dockerfile练习

添加新评论