赞
踩
Docker镜像是Docker容器的基础,可以理解为是一个只读的模板,包含了运行Docker容器所需的所有文件、配置和依赖关系。镜像可以从一个或多个Dockerfile构建而来,也可以从其他镜像构建而来。Docker镜像可以被存储、分享和重复使用,可以在不同的环境中部署相同的应用程序,从而实现快速、可靠的部署。Docker Hub是一个公共的镜像仓库,包含了数以万计的Docker镜像,开发者可以在其中找到自己需要的镜像,并在自己的项目中使用它们。
创建docker镜像主要有如下四种方式:
博文实验内容是介绍使用Dockerfile文件创建新镜像,博文实验环境信息如下:
运行一个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
编辑创建一个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;"]
使用docker build命令构建镜像,-t参数设置新镜像的标签,最后参数为dockerfile文件所在目录,博文实验环境这里是当前目录,所以是个点。
构建完成后我们使用docker images命令查看镜像。
[root@yws55 ~]# docker run -itd -p 8080:80 --name nginxtest ubuntu:nginx
8325a1f2eb49c48c26587976abde8120e401049a9fb21affd583522478bec976
使用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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。