当前位置: 首页 > news >正文

(二)Docker实战--Docker镜像部署与启动

一、构建docker镜像

(一)、步骤

1.导入jdk8的docker镜像

# 将jdk.tar加载到本地的docker镜像仓库中
docker load -i jdk.tar

2.编写dockerfile

Dockerfile文件

定义“如何构建docker镜像”的文本文件,包含一系列指令,docker会按照这些指令的顺序,自动构建出一个可运行的镜像。

# 指定基础镜像(Java 8运行环境)
FROM openjdk:8
# 容器内的工作目录
WORKDIR /app
# 将宿主机的文件复制到镜像中
ADD ./test.jar /app/test.jar
# 定义容器启动时必须执行的命令
ENTRYPOINT ["java","-jar","test.jar" ]

3.上传jar包到服务器

4.执行构建命令【docker build 命令会自动读取并执行 Dockerfile 中的所有指令;必须和Dockerfile同级

docker build -t test:1.0 .
# docker build:启动镜像构建流程
# -t test:1.0:给镜像命名为test,标签为1.0
# .:表示以当前目录作为 “构建上下文”(Docker 会在当前目录下找 Dockerfile 和需要复制的文件,如test.jar)。

二、生产环境启动Docker容器

为什么在生产环境中不使用docker run??

docker run的配置和操作缺乏“持久化记录”,无法留下可追溯、可复用的痕迹(即配置档案)

Docker run 是通过命令行参数一次性启动容器的,这些参数只存在于“执行命令的瞬间”。

生产环境:系统或软件正式投入使用、面向终端用户和实际业务的运行环境。

(一)、Docker Compose 配置文件

所以我们使用docker-compose文件:

其作用有2个:对多个相互关联的容器进行统一管理/docker容器的配置文件化

内容如下:

# 指定Docker Compose的配置版本
version: '3'
# 定义服务的配置块、一个services下可以包含多个服务
services:# 定义一个名为test的服务test:# 指定创建该服务容器所使用的Docker镜像名称为test.1.0.1image: "test.1.0.1"# 指定容器实际名称为testcontainer_name: test# 容器重启策略为alwaysrestart: always# 将主机的18080端口映射到容器内的8080端口ports:- 18080:8080# 挂载 实现持久化【将主机当前目录下的data文件夹挂载到容器内的/app目录下volumes:- ./data/:/app# 设置时区为伤害environment:- TZ=Asia/Shanghai# 让容器加入test网络组networks:- test
# 声明该网络组是外部已经存在的网络
networks:test:external: true

网络组:隔离与通信,是逻辑上的隔离单元——加入同一个网络的容器,默认可以通过容器名相互访问;不同网络的容器默认相互隔离。

(二)、步骤

1.在配置文件目录下创建data目录(目的是映射)

2.将test.jar移动到data目录下

原因:

挂载会“覆盖”容器内原有的目录内容,即容器内/app的内容由主机的/data目录内容决定;

Dockerfile中写的容器启动逻辑是:在app目录下运行程序

# 指定基础镜像(Java 8运行环境)
FROM openjdk:8
# 容器内的工作目录
WORKDIR /app
# 将宿主机的文件复制到镜像中
ADD ./test.jar /app/test.jar
# 定义容器启动时必须执行的命令
ENTRYPOINT ["java","-jar","test.jar" ]

若主机目录没有test.jar,则会报错找不到test.jar

3.编写docker-Compose文件

如上所示:

4.创建网落组test(test是自己命名的)

5.启动容器、查看日志

docker logs -f 后面跟的是容器id 或 名称【-f是--follow的缩写,意思是实时输出容器新产生的日志】

6.在本机电脑上访问虚拟机的ip地址:18080/test

# 停掉容器
docker-compose down

四、shell脚本自动部署

1.脚本编写:

vi build.sh
#!/bin/bash
echo "停用所有容器"
docker-compose down
echo "删除镜像"
docker rmi test.1.0.1
echo "构建镜像"
docker build -t test.1.0.1 .
echo "运行容器"
docker-compose up -d

#!/bin/bash:Shebang(也称为 hashbang)声明,用于指定脚本的解释器。

echo:输出文字

2.执行脚本

Dockerfile、docker-compose和build.sh必须在同一级

http://www.dtcms.com/a/594463.html

相关文章:

  • 【ZeroRange WebRTC】对称加密 vs 非对称加密(从原理到实践)
  • 网站建设逻辑长沙网络营销群
  • 你们交学费做网站局机关门户网站建设自查报告范文
  • 腾讯企点网页版山东网站排名优化公司
  • 网站地图有什么作用陕西seo顾问服务
  • openai 的 codex
  • 国内网如何看国外网站南阳河南网站建设价格
  • 电脑有连接网络,但浏览器网页无法打开
  • 专门做招商的网站东台网站建设
  • 网站便民服务平台怎么做wordpress优化cookie
  • 从BI深耕到AI洞察的渐进式增长实践
  • 建设银行网站转账计算机网站开发书籍
  • 茶叶公司网站源码jsp网站开发的使用表格
  • 重庆在建项目查询windows优化大师值得买吗
  • 做别人一样的网站模板网站开发的评论界面怎么写
  • 备案 网站名称 重复宾馆网站模板
  • 音乐网站怎么建设icp
  • 从局部性原理到一致性模型:深入剖析缓存设计的核心权衡
  • 自己动手写深度学习框架(数值法计算梯度)
  • Linux上的curl和telnet
  • 网络科技有限公司网站建设wordpress手机分享插件
  • 河北建设厅注册中心网站首页百科类网站建设
  • 医院网站建设公司价格外贸网站增加外链方法
  • 网站认证是什么意思萝岗哪家网站建设好
  • 感悟生命:《藏在罐子里的爱》
  • Raylib 事件
  • mvc做网站前台代码景德镇做网站
  • 做纱线的网站个人建网站步骤
  • 六爻观测基础(二)——五行
  • 天山网站企业信息系统案例