Docker封装镜像

本文详细介绍了如何使用Docker的commit命令封装镜像,以及通过Dockerfile创建自定义镜像的过程。首先,通过示例展示了如何在Ubuntu镜像基础上进行文件操作并使用commit保存为新镜像。接着,讲解了Dockerfile的编写,包括指定基础镜像、设置维护者信息、复制文件、安装软件和暴露端口等步骤,最后通过`docker build`命令构建镜像并运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker封装镜像
一、commit封装镜像
1.导入镜像
docker load -i ubuntu.tar
docker images

2.建立容器vm1,运行ubuntu,并建立文件,然后ctrl+p+q退出
[root@server1 ~]# docker run -it --name vm3 ubuntu
root@d9389486d98d:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@d9389486d98d:/# touch file{1…10}
root@d9389486d98d:/# ls
bin etc file2 file5 file8 lib mnt root srv usr
boot file1 file3 file6 file9 lib64 opt run sys var
dev file10 file4 file7 home media proc sbin tmp
root@d9389486d98d:/# [root@server1 ~]#

3.删除这个容器,再基于ubuntu创建容器,查看我们所作修改是否还在

[root@server1 ~]# docker rm vm3 -f
vm3
[root@server1 ~]# docker run --name vm3 -it ubuntu
root@60219e7cfb6f:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@60219e7cfb6f:/#

可以看到我们所作的修改已经被释放掉,
那么问题来了:如果我们得到一个原始的镜像后,需要往上百台的之机上构建容器并部署相关服务,做好的镜像没办法保存打包,那将是一件非常痛苦的事情;这个时候我们可以使用commit命令将容器构建成一个新的镜像
4.commit封装镜像
构建镜像三部曲:
运行容器
修改容器
将容器保存为新的镜像
我们在vm3这个容器中修改,然后使用commit封装镜像
root@60219e7cfb6f:/# touch file{1…10}
root@60219e7cfb6f:/# ls
bin etc file2 file5 file8 lib mnt root srv usr
boot file1 file3 file6 file9 lib64 opt run sys var
dev file10 file4 file7 home media proc sbin tmp
root@60219e7cfb6f:/# [root@server1 ~]#
[root@server1 ~]# docker commit vm3 ubuntu:vm3
sha256:cabed28649ae61bbb1bd49be17d6342fa33209dcdc825b8c3fafacb3130dbe3d

然后再删除这个容器后

可以看到commit已经创建了一个ubuntu:vm3的镜像,我们基于这个镜像创建运行一个容器看看刚才的修改是否还在

可以看到使用新封装的镜像构建容器,保存了之前操作的痕迹
二、使用Dockerfile封装虚拟机

1.删除之间建立的容器和镜像
2.在/下建立一个目录,!!注意!!不要把dockerfile放在/下(因为创建镜像的时候会加载dockerfile所在目录的全部数据)
Mkdir /docker
Cd /docker
vim Dockerfile
FROM rhel7
MAINTAINER 965386491@qq.com

COPY yum.repo /etc/yum.repos.d/
RUN rpmdb --rebuilddb
RUN yum clean all
RUN yum install -y httpd
RUN echo “This is guozhaoliang’s test web” >> /var/www/html/index.html

EXPOSE 80
CMD ["/usr/sbin/httpd", “-D”, “FOREGROUND”]

3.建立docker-httpd镜像
docker build . .指Dockerfile所在目录

建运行docker封装的http镜像
docker run -d -p 80:80 --name example1 http

实现一个docker封装postgresql集群镜像可以按照以下步骤进行: 1. 安装Docker,如果已经安装Docker可以跳过这一步。 2. 下载postgresql镜像,可以使用以下命令: ``` docker pull postgres ``` 3. 创建docker-compose.yml文件,可以使用以下代码: ``` version: "3" services: db1: image: postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password POSTGRES_DB: mydatabase volumes: - ./data/db1:/var/lib/postgresql/data ports: - "5432:5432" db2: image: postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password POSTGRES_DB: mydatabase volumes: - ./data/db2:/var/lib/postgresql/data ports: - "5433:5432" db3: image: postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password POSTGRES_DB: mydatabase volumes: - ./data/db3:/var/lib/postgresql/data ports: - "5434:5432" ``` 上述代码中,我们创建了三个postgresql容器,并将它们绑定到不同的端口。同时,我们还定义了数据库的用户名、密码和数据库名称,并将数据保存在本地目录的data文件夹中。 4. 运行docker-compose.yml文件,可以使用以下命令: ``` docker-compose up -d ``` 上述命令将启动三个postgresql容器,并将它们绑定到不同的端口。 5. 验证postgresql集群是否正常工作,可以使用以下命令: ``` docker-compose ps ``` 上述命令将显示三个postgresql容器的状态,如果状态为“Up”,则表示集群正常工作。 以上就是一个基本的docker封装postgresql集群镜像的步骤,可以根据实际需要进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值