制作Docker镜像,一般有两种方式:一种是commit方式,利用已有的镜像,运行后安装定制自己需要的环境,然后生成镜像;另一种就是build方式,通过编写Dockerfile命令脚本进行生成镜像。
本文介绍使用commit制作镜像,并配置容器内程序自动启动。
1.从远程仓库拉取一个纯净的 centos 系统镜像
sudo docker pull centos:7
2.创建并进入容器
#创建容器
sudo docker run -itd --rm --name centos7-container --privileged=true --user=root -p 805:80 -p 5545:554 centos:7 /bin/bash
#查看所有的容器
sudo docker ps -a
#进入容器
sudo docker exec -it centos7-container /bin/bash
3.操作容器
在容器中安装环境 ,修改配置文件等(根据自己需求操作,以下仅供参考)。
sudo docker cp build.tar.gz centos7-container:/opt
容器内应用服务自启动设置(如果不想要自动启动,以下操作可以略过)
在容器的根目录下创建start.sh脚本:
#!/bin/sh
/opt/build/bin/MediaServer -c /opt/build/config/config.ini -d #启动服务(换成自己的命令)
/bin/bash #保留一个终端,防止容器自动退出
修改start.sh权限:
chmod 777 /start.sh
4.安装好环境之后,退出容器
用 exit 退出容器
5.将容器制作成镜像
sudo docker commit -m 'centos:7 zlmediakit' -a 'creater' centos7-container centos7-zlm-image
6.将制作好的镜像打成 tar 包
sudo docker save -o centos7-zlm-image.tar centos7-zlm-image
7.加载tar包
换一台机器,加载tar包。或者在本机上删除centos7-zlm-image。
加载tar包
sudo docker load -i centos7-zlm-image.tar
需要先stop容器centos7-container,stop之后容器自动删除,然后删除静像centos7-zlm-image。
#关闭现有容器(占用同名端口)
sudo docker stop ca17e6773fc1
sudo docker stop centos7-container
sudo docker rmi centos7-zlm-image
8.使用镜像创建新容器
#查看现有容器
sudo docker ps -a
#创建新容器(如果不需要自动启动,可将/start.sh换成/bin/bash)
sudo docker run -itd --rm --name centos7-zlm-image-container --privileged=true --user=root -p 805:80 -p 5545:554 centos7-zlm-image /start.sh
#进入新容器
sudo docker exec -it centos7-zlm-image-container /bin/bash
#停止容器(自动删除)
sudo docker stop centos7-zlm-image-container
#删除静像
sudo docker rmi centos7-zlm-image
bingo!
参考:
https://blog.csdn.net/lzyzuixin/article/details/119647438
https://blog.csdn.net/wang_magento/article/details/100763622