创建一个安装好apache工具的容器镜像
docker run -it docker.io/centos:latest /bin/bash
在container中安装apache软件包
yum install httpd
查看镜像(当前只有一个)
docker images
创建一个安装好apache工具的容器镜像
docker commit container_id 创建后的镜像名称:标签
docker commit 456ac4e1d8ef docker.io/centos:httpd
现在查看就会发现多了一个image
docker images
使用新创建的docker.io/centos:httpd镜像生成一台容器实例
docker run -it docker.io/centos:httpd /bin/bash
然后我们在container中查看是否已经安装了apache
rpm -qa httpd
ok
方法二
- 通过docker build创建一个基于centos的httpd web服务器镜像
- 使用docker build创建镜像时,需要使用Dockerfile文件自动化制作image镜像
创建工作目录
mkdir /docker-build
cd /docker-build
touch Dockerfile
编辑Dockerfile
vim Dockerfile
添加一下内容
FROM docker.io/centos:latest
MAINTAINER <sss@localhost>
RUN yum -y install httpd
ADD start.sh /usr/local/bin/start.sh
ADD index.html /var/www/html/index.html
解释
FROM ---- 基于哪个镜像
MAINTAINER ---- 镜像创建者
RUN ---- 安装软件用
ADD ---- 将文件拷贝到新生成的镜像的文件系统对应的目录,所有拷贝到新镜像中的文件和文件夹的权限为0755,uid和gid为0
cmd ---- container启动时执行的命令或启动服务,只能有一条此命令,多条只执行最后一条cmd
创建start.sh脚本启动httpd服务和apache默认首页index.html文件
echo '/usr/sbin/httpd-DFOREGROUND'>start.sh
chmod a+x start.sh
echo 'docker image build test' > index.html
/usr/sbin/httpd-DFOREGROUND 相当于systemctl start httpd
使用命令来创建新的image
docker build -t docker.io/centos:httpd2 ./
./表示当前目录, 当前目录下要包含Dockerfile
镜像操作
导出镜像
- Save Image To TarBall
- 保存Image到tar包
语法
docker save -o 导出的镜像名.tar 本地镜像名:镜像标签
docker save -o docker.io/centos:httpd2.tar docker.io/centos:httpd2
删除镜像
docker rmi docker.io/centos:httpd2
导入镜像
docker load -i docker.io/centos:httpd2.tar