当前位置:   article > 正文

Docker之使用Dockerfile创建新镜像_使用dockerfile创建镜像

使用dockerfile创建镜像

一、Docker镜像简介

  Docker镜像是Docker容器的基础,可以理解为是一个只读的模板,包含了运行Docker容器所需的所有文件、配置和依赖关系。镜像可以从一个或多个Dockerfile构建而来,也可以从其他镜像构建而来。Docker镜像可以被存储、分享和重复使用,可以在不同的环境中部署相同的应用程序,从而实现快速、可靠的部署。Docker Hub是一个公共的镜像仓库,包含了数以万计的Docker镜像,开发者可以在其中找到自己需要的镜像,并在自己的项目中使用它们。
创建docker镜像主要有如下四种方式:

  • 从已有的镜像创建:可以使用docker pull命令从Docker Hub或其他镜像仓库中拉取镜像,然后使用docker run命令创建容器。
  • 使用Dockerfile创建:Dockerfile是一个文本文件,包含了一系列指令,用于构建Docker镜像。可以使用docker build命令根据Dockerfile创建镜像。
  • 从容器创建:可以使用docker commit命令从一个运行中的容器创建一个新的镜像。
  • 使用外部文件创建:可以使用docker import命令从一个本地文件或远程URL创建一个新的镜像。

  博文实验内容是介绍使用Dockerfile文件创建新镜像,博文实验环境信息如下:

  • 操作系统:centos7.9
  • docker版本:23.0.1
  • docker基础镜像:Ubuntu22.04
  • NGINX软件版本:1.18.0

二、创建步骤

1、镜像源说明

  运行一个Ubuntu基础镜像容器,登录后我们可以确认,基础镜像中继没有wget命令,也没有查看ip地址的命令,也没有NGINX命令,时区是UTC时区。接来下我们将基于Ubuntu基础镜像,通过dockerfile的方式创建一个包含nginx并包含wget和ip addr命令的镜像文件。并给镜像设置时区为中国上海的时区。

[root@yws55 ~]# docker run -itd --name utest ubuntu:latest
c4b4e6b8e891a489f0a0c60737ce34e6a4accf13adbe4b64915ee95b915d59c9
[root@yws55 ~]# docker --version
Docker version 23.0.1, build a5ee5b1
[root@yws55 ~]# docker exec -it utest /bin/bash
root@c4b4e6b8e891:/# which wget
root@c4b4e6b8e891:/# ip addr
bash: ip: command not found
root@c4b4e6b8e891:/# nginx -t
bash: nginx: command not found
root@c4b4e6b8e891:/# date
Thu Jun 8 06:52:14 UTC 2023

2、创建dockerfile文件

  编辑创建一个dockerfile文件,文件是以FROM开头,选择我们的基础镜像,RUN是我们需要执行的指令,就是在基础镜像的基础上需要执行的指令,比如设置时区,安装wget、NGINX等;EXPOSE指令是需要暴露的端口;CMD命令是容器运行的时候执行的命令,这里是启动NGINX。
在这里插入图片描述

# 基于Ubuntu镜像创建
FROM ubuntu:latest

# 安装NGINX和wget
RUN apt-get update && apt-get install -y wget iproute2 net-tools nginx

# 安装完成tzdata工具并设置时区为上海时区
RUN apt-get install -y tzdata
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 暴露80端口
EXPOSE 80

# 启动NGINX服务
CMD ["nginx","-g", "daemon off;"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

3、构建镜像

  使用docker build命令构建镜像,-t参数设置新镜像的标签,最后参数为dockerfile文件所在目录,博文实验环境这里是当前目录,所以是个点。
在这里插入图片描述

4、查看镜像

  构建完成后我们使用docker images命令查看镜像。
在这里插入图片描述

5、使用新镜像启动一个容器

[root@yws55 ~]# docker run -itd -p 8080:80 --name nginxtest ubuntu:nginx
8325a1f2eb49c48c26587976abde8120e401049a9fb21affd583522478bec976

6、验证镜像内容

  使用docker exec登录容器,然后验证是否正确的安装wget、ip addr、netstat命令,以及是否安装NGINX软件并启动服务。验证下来发现已经完全安装dockerfile文件要求执行了
在这里插入图片描述
在这里插入图片描述

[root@yws55 ~]# docker exec -it nginxtest /bin/bash
root@26513e9f71e3:/# which wget
/usr/bin/wget
root@26513e9f71e3:/# ip addr

root@26513e9f71e3:/# netstat -tnpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1/nginx: master pro
tcp6 0 0 :::80 ::

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/380088?site
推荐阅读
相关标签