Docker镜像,私有仓库及端口映射的搭建

一、Docker镜像

1.1、镜像的分层:

  1. Dockerfile中的每个指令都会创建-一个新的镜像层
  2. 镜像层将被缓存和复用
  3. 当Dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效
  4. 某一层的镜像缓存失效之后,它之后的镜.像层缓存都会失效
  5. 镜像层是不可变的,如果在某- -层中添加一个文件,然后在下- -层中删除它,则镜像中依然会包含该文件

二、Docer创建镜像的创建方法

创建docker镜像的三种方法,分别是基于已有的容器创建、基于本地模板创建、以及dockerfile创建。

2.1、基于已有镜像创建

将容器里面运行的程序及运行环境打包生成新的镜像
docker commit [选项]容器ID/名称仓库名称:[标签]
●-m说明信息
●-a作者信息
●-p生成过程中停止容器的运行

2.2、基于本地镜像创建

1.导入本地镜像debian-7.0-x86-minimal.tar.gz
2.cat debian-7.0-x86-minimal.tar.gz | docker import - 镜像名:标签
3.docker images | grep 标签

2.3、Dockerfile创建镜像

Dockerfile是由一组指令组成的文件
Dockerfile结构四部分
●基础镜像信息
●维护者信息
●镜像操作指令
●容器启动时执行指令
Dockerfile每行支持一条指令, 每条指令可携带多个参数,支持使用以“#“号开头的注释

#基于的基础镜像
FROM centos:7
#维护镜像的用户信息
MAINTAINER gwr
#镜像操作指令安装apache软件
RUN yum -y update
RUN yum -y install httpd
#开启80端口
EXPOSE 80
#复制网站首页文件
ADD index.html /var/www/html/index.html
#将执行脚本复制到镜像中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
#启动容器时执行脚本
CMD ["/run.sh"]

在这里插入图片描述创建run脚本

vim run.sh   #启动脚本
#!/bin/bash
rm -rf /run/httpd/*        #清理httpd的缓存
exec /usr/sbin/apachectl -D FOREGROUND     #启动apache进程

输入测试内容,指向html文件
在这里插入图片描述生成镜像,末尾处一定要加空格 点

docker build -t httpd:test .  

新镜像运行容器

格式:docker run -d --name 名字 -p 端口:源端口 仓库名称:[标签]
docker run -d --name web1 -p 1999:80 httpd:centos

在这里插入图片描述打开浏览器进行测试
在这里插入图片描述

三、建立私有仓库

docker pull registry         # 下载镜像源

修改配置文件

vim /etc/docker/daemon.json
"insecure-registries":["20.0.0.139:5000"],

在这里插入图片描述

创建,查看并开启容器

[root@localhost ~]# systemctl restart docker
[root@localhost ~]# docker create -it registry bash
[root@localhost ~]# docker ps -a
[root@localhost ~]# docker start 0ae7c9af4c52

在这里插入图片描述
宿主机的/data/registry自动创建挂载容器中的/tmp/registry

[root@localhost ~]# docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry

在这里插入图片描述
更改标记为20.0.0.139:5000/nginx,上传,并获取私有仓库

[root@localhost ~]# docker tag nginx:latest 20.0.0.139:5000/nginx
[root@localhost ~]# docker push 20.0.0.139:5000/nginx
[root@localhost ~]# curl -XGET http://20.0.0.139:5000/v2/_catalog

在这里插入图片描述
测试私有仓库下载

[root@localhost ~]# docker pull 20.0.0.139:5000/nginx

在这里插入图片描述查看效果
在这里插入图片描述

四、端口映射

-P 随机端口映射 ,-p指定端口映射

docker run -d -P nginx         #随机端口
docker run -d -p 111180 nginx    # 指定端口

在这里插入图片描述
在这里插入图片描述

五、数据卷

5.1、Docker数据卷

在宿主目录/var/www 挂载容器中的data1

[root@localhost www]# docker run -v /var/www:/data1 --name web123 -it centos bash

进入容器data目录中,创建一个文件。退出后 进入宿主目录,查看文件是否存在
在这里插入图片描述

5.2、数据卷容器

1、现在容器里创建一个目录
docker run --name web3 -v /data1 -v /data2 -it centos /bin/bash

2、另开一个终端,新容器挂载数据卷容器web3
docker run -it --volumes-from web3 --name db1 centos /bin/bash

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值