it编程 > 开发工具 > Docker

Docker使用Dockerfile自定义镜像方式

73人参与 2024-08-08 Docker

什么是dockerfile

dockerfile就是一个文本文件,其中包含一个个的指令(instruction),用指令来说明要执行什么操作来构建镜像

每一个指令都会形成一层layer。  

常见指令

注意:第一行必须是 from 指令才行

看实例

需求:

基于ubuntu镜像构建一个新镜像,运行一个java项目

1.下载资料

将本文最上面的资源下载到本地

2.查看dockerfile

等会我们直接使用这个文件就可以依次执行这些指令帮助我们构建好自己的镜像(每个指令都会分一层)

# 指定基础镜像
from ubuntu:16.04
# 配置环境变量,jdk的安装目录
env java_dir=/usr/local

# 拷贝jdk和java项目的包
copy ./jdk8.tar.gz $java_dir/
copy ./docker-demo.jar /tmp/app.jar

# 安装jdk
run cd $java_dir \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8

# 配置环境变量
env java_home=$java_dir/java8
env path=$path:$java_home/bin

# 暴露端口
expose 8090
# 入口,java项目的启动命令
entrypoint java -jar /tmp/app.jar

3.新建目录

mkdir docker-demo
cd docker-demo

4.上传资料

直接借助 finalshell 拖动上传即可:

5.构建镜像

docker build -t javaweb:1.0 .

最后空格后面要加一个点,代表的是dockerfile所在的目录(也就是我们现在所在的 docker-demo 目录)

可以看到镜像构建完成了

6.启动容器

docker run --name my-javaweb -p 8090:8090 -d javaweb:1.0

启动成功

7.浏览器访问

http://自己的服务器地址:8090/hello/count

四、实例升级

1.为什么升级

其实之前的实例中我们的 dockerfile 还可以简化一些不需要我们写的东西,当然并不是不用写了,而是别人帮我们写好了

2.如何升级

ⅰ.更改 dockerfile

我们可以直接基于已经安装好 jdk 的镜像 openjdk:8-alpine 来构建我们的镜像,只需要将 dockerfile 更改为如下:

# 指定基础镜像
from openjdk:8-alpine

copy ./docker-demo.jar /tmp/app.jar

# 暴露端口
expose 8090
# 入口,java项目的启动命令
entrypoint java -jar /tmp/app.jar

ⅱ.构建镜像并运行容器

docker build -t javaweb:2.0 . # 构建镜像
docker run --name my-javaweb-2.0 -p 8091:8090 -d javaweb:2.0 # 启动容器

3.再次测试

http://自己的服务器地址:8091/hello/count

总结

1.dockerfile的本质是一个文件,通过指令描述镜像的构建过程

2.dockerfile的第一行必须是from,从一个基础镜像来构建

3.基础镜像可以是基本操作系统,如ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

如何在 Docker 环境中部署和运行 Nginx ?

08-06

Docker 停止及删除容器和镜像(单个和所有)

08-06

在 Ubuntu Server 22.04 上安装 Docker 的详细步骤

08-06

【Docker】报错解决:“[Errno 14] curl#7 - “Failed to connect to 2a03:2880:f10e:83:face:b00c:0:25de: 网络不可达”

08-06

Docker容器中vi/vim命令安装、vi/vim: command not found解决方法

08-06

docker-compose安装elasticsearch和kibana

08-06

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论