Docker镜像以及私有仓库的创建
目录
一、Docker镜像
1.1.1、Docker镜像简介
- 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数。
- 镜像是容器在本地运行的基础,Dokcer运行容器前需要本地存在对应的镜像,如果不存在对应的镜像,Docker 会先从默认的镜像仓库下载。
- 应用的是发布的标准格式。
- 支撑一个docker容器的运行。
1.1.2、docker镜像的创建方法
基于已有的镜像创建
基于本地模板创建
基于Dockerfile创建
1.1.3、docker镜像的分层结构
- Dockerfile中的每个指令都会创建一个新的镜像层 镜像层将被缓存和复用
- 当Dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效
- 某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效
- 镜像层是不可变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然会包含该文件
二、基于已有的镜像创建实例
将容器里面运行的程序及运行环境打包生成新的镜像
docker commit 选项 容器id 想要创建的镜像名:标签
-m:说明信息
-a:作者信息
-p:生成过程中停止容器的运行
##
三、基于本地模板创建实例
通过导入操作系统模板文件生成新的镜像
使用wget命令导入为本地镜像
四、使用Dockerfile创建实例
Mkdir Apache
Cd Apache
Vim Docker
FROM centos:7 # 基于的基础镜像
MAINTAINER The porject #维护镜像的用户信息
RUN yum -y update # 更新yam源
RUN yum -y install httpd # 镜像操作指令安装Apache软件
EXPOSE 80 # 开启80端口
ADD index.html /var/www/html/index.html # 复制网站首页文件
ADD run.sh /run.sh # 将执行脚本复制到镜像中
RUN chmod 755 /run.sh #给个权限
CMD ["/run.sh"] # 启动容器是执行脚本
Vim run.sh #创建脚本让CMD执行
#!/bin/bashrm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUND
echo “this is lkiu web” > index.html #创建一个网站让ADD复制
生成镜像
docker build -t httpd:centos . (注意别忘了有“.”)
必须在当前有Dockerfile的目录***意空格加. 代表当前目录
注意没有centos:7
镜像自动拉取查看一下
新镜像运行容器
docker run -d -p 1216:80 httpd:centos
-p 为映射端口,将容器端口80映射为宿主主机端口1216(必须是未被占用的)
测试:访问192.168.100.131:1216
五、搭建私有仓库
私有仓库建立
Docker pull registry # 拉取镜像
指定私有仓库位置,才能在后面上传、拉取镜像
vi /etc/docker/daemon.json
重启docker
systemctl restart docker
创建容器并启动
上传镜像到私有仓库
获取私有仓库列表
curl -XGET http://192.168.100.131:5000/v2/_catalog
{"repositories":["centos"]}