Docker容器----镜像构建、私有仓库、数据卷、端口映射

这篇博客详细讲解了Docker的镜像构建方法,包括通过Dockerfile创建镜像、基于已有容器和本地模板构建。此外,还介绍了私有仓库registry的创建和使用,以及数据卷和数据卷容器在数据持久化中的作用。最后,讨论了端口映射和容器互联的基本操作。
摘要由CSDN通过智能技术生成

前言:

本篇博客主要就Docker 镜像构建、私有仓库简易版、数据卷和数据容器介绍以及端口映射等操作

一、Docker 镜像构建
1.1 docker镜像创建方式
  • docker镜像主要有三种自定义构建方式

    dockerfile :基于源镜像修改配置,似乎用dockerfile生成所需的镜像,用于新业务

    ② 基于已有镜像容器进行操作,经常用于业务升级、迁移、镜像打包

    ③ 基于本地模板进行构建(使用较少)

1.2 Dcokerfile
  • Dockerfile是一个Docker镜像的描述文件,其内部包含了一条条的指令每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建
1.2.1 镜像的分层
  • Dockerfile中的每个指令都会创建一个新的镜像层
  • 镜像层将被缓存和复用
  • 当Dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效
  • 某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效
  • 镜像层是不可变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然会包含该文件。所以在Dockerfile创建镜像过程中会产生临时容器缓存数据,但是创建完成后临时容器都会被删除。
1.2.2 dockerfile 文件结构
  • Dockerfile文件时以组指令组成,文件结构分为四部分

    ① 基础镜像信息

    ② 维护者信息

    ③ 镜像操作指令

    ④ 容器启动时执行指令

  • dockerfile操作指令详解

在这里插入图片描述

1.3 基于dockerfile创建镜像
  • 在虚拟机新建目录,编写Dockerfile文件,以下为基于Dockerfile创建Apache镜像示例
[root@docker ~]# mkdir /apache
[root@docker ~]# cd /apache/
[root@docker apache]# vim Dockerfile
Dockerfile  run.sh
#基于基础镜像
FROM centos:7
#维护镜像的用户信息
MAINTAINER this is test
#镜像操作指令安装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 775 /run.sh
#启动容器时执行脚本
CMD ["/run.sh"]
  • 在同一目录下编写Apache启动脚本run.sh
[root@docker apache]# vim run.sh
#!/bin/bash
#清除HTTPD的缓存
rm -rf /run/httpd/*
#启动Apache进程
exec /usr/sbin/apachectl -D FOREGROUND
  • 在同一目录下编写站点信息
[root@docker apache]# echo "this is apache web" > index.html
[root@docker apache]# ls
Dockerfile  index.html  run.sh

  • 创建镜像
[root@docker apache]# docker build -t httpd:new .
Successfully built e66546f52890
Successfully tagged httpd:new
...省略部分内容
  • 查看新建镜像
[root@docker apache]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
httpd               new                 e66546f52890        About a minute ago   524MB
centos              7                   5e35e350aded        5 months ago         203MB
  • 新建镜像容器
[root@docker apache]# docker run -d --name HTTPD1 -p 2389:80 httpd:new
0dc94b6feaa02258296b0e9af35b002d6f219e7545f7a5d752a4877b9e1bd700
[root@docker apache]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
0dc94b6feaa0        httpd:new           "/run.sh"           7 seconds ago       Up 6 seconds        0.0.0.0:2389->80/tcp   HTTPD1
  • 访问网页测试
    在这里插入图片描述
1.4 基于已有的镜像容器进行创建
  • 将容器中云心的程序及其环境打包生成新的镜像

    格式:docker commit [选项] 容器ID/名称 仓库名称:[标签]

    -m :说明信息

    -a :作者信息

    示例:

#现有的容器
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
0dc94b6feaa0        httpd:new           "/run.sh&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值