自定义镜像与仓库
自定义镜像
Docker commit
使用镜像启动容器,在该容器基础上修改
另存为一个新镜像
Dockerfile
Dockerfile语法格式
-FROM:基础镜像
-MAINTAINER:镜像创建者信息
-EXPOSE:开放的端口
-ENV:设置变量
-ADD:复制文件到镜像
-RUN:制作镜像时执行的命令,可以有多个
-WORKDIR:定义容器默认工作目录
-CMD:容器启动时执行的命令,仅可以有一条CMD
使用Dockerfile工作流程
-创建目录,进入目录
-创建文件Dockerfile
-编辑Dockerfile
-Docker build -t 镜像名字 镜像所在目录
案例
自定义镜像仓库
registry基本概念
共享镜像的一台服务器(镜像化的一台服务器)
自定义私有仓库(服务端)
安装私有仓库(服务端)
启动私有仓库,并设置开机自启
仓库配置文件及数据存储路径
自定义私有仓库(客户段)
客户段配置:
-修改配置文件/etc/sysconfig/docker
-允许非加密方式访问仓库
-docker 仓库地址
重启docker服务
自定义私有仓库
为镜像创建标签:
-这里的地址要写仓库主机的IP地址或者主机名
-docker tag 镜像:标签 IP:5000/镜像:latest
持久化存储
卷的概念
- docker容器不保存任何数据
- 重要数据请使用外部卷存储(数据持久化)
- 容器可以挂载真实机目录或共享存储为卷
主机卷的映射
将真实机目录挂载到容器中提供持久化存储
-目录不存在就自动创建
-目录存在就直接覆盖掉
共享存储
基本概念
一台共享存储服务器可以提供给所有Docker主机使用
共享存储服务器(NAS,SAN,DAS等)
如:
-使用NFS创建共享存储服务器
-客户段挂载NFS共享,并最终映射到容器中
使用共享存储的案例
案例
Docker网络架构
查看默认Docker创建的网络模型
使用Docker创建网桥
新建Docker网络模型
使用自定义网桥
启动容器,使用刚刚创建的自定义网桥
案例
客户端访问容器内的资源
默认容器可以访问外网
但外部网络的主机不可以访问容器内的资源
容器的特征是可以吧宿主机变成对应的服务
-我们可以使用-p参数吧容器软口和宿主机端口绑定
- -p 宿主端口:容器端口