Docker打包自定义镜像

镜像的结构

Docker打包镜像

前置工作

 1.虚拟机中配置好docker环境,并导入nginx,mysql,jdk的镜像

2.下载docker for windows

用idea打包镜像和创建容器需要这个东西支持

下载安装包后执行,无脑回车即可

3.idea中配置docker连接

 

 

完成配置后,点开docker连接,可以看到如下内容

简单介绍一下,可以通过镜像创建容器。

镜像相当于一个配方,容器相当于菜肴,通过一个秘方可以创建无数个菜肴,同理:通过指定镜像可以创建无数个容器。

每个容器相当于一个小型linux机器,它只包含最基本的功能(内核级功能),用一句话形容就是:麻雀虽小五脏俱全。

4.将我们的工程打成一个jar包

1.首先,修改pom文件中的skip标签的值为false

否则他会跳过打包我们的启动类,在执行java -jar时会报如下错误 

2.执行命令  mvn -clean      mvn -package

也可以在界面执行

打包好会生成一个target文件夹,我们的jar包在这个文件夹里面 

两种打包镜像的方式

注意,镜像的名字必须全小写

手动打包(不推荐,应急情况下使用)

1.写Dockerfile文件

 

# 基于jdk17以上 的镜像创建
FROM openjdk:17-jdk-alpine

# 将编译后的文件复制到镜像中,用于运行
# 参数1 jar包所在位置(目录+文件名)
# 参数2 给这个jar起别名  用别名是为了移植方便
# ADD=COPY
ADD target/TestDockerDB01-0.0.1-SNAPSHOT.jar /app.jar

# 设置启动命令
ENTRYPOINT ["java","-jar","/app.jar"]
2.将jar包和Dockerfile文件通过ftp工具上传到虚拟机

3. 通过命令打包镜像

命令格式

docker build -t   镜像名:版本号   Dockerfile所在的地址

执行命令报错,这是因为当我们把jar包移到虚拟机后,它所在的位置就不是target/TestDockerDB01-0.0.1-SNAPSHOT.jar了 

这时候我们通过vi Dockerfile去修改文件

再一次检查一下jar包和Dockerfile文件的位置,重新执行命令

创建镜像成功

idea中也能看到我们刚刚创建的镜像 

通过idea打包

回到Dockerfile文件,进行配置

 把Dockerfile跑起来,这里我们选择第一个,创建镜像和容器

创建成功后会自动启动容器

Docker 打包 MySQL 镜像是通过 Dockerfile 来完成的一个自动化过程,它使得创建、部署和管理基于特定配置的容器变得简单高效。以下是基本步骤: ### 正确使用 Dockerfile 创建 MySQL 镜像 #### 1. **创建 Dockerfile** 首先,你需要在一个目录下创建一个 `Dockerfile` 文件。这个文件包含了构建镜像的所有命令。 ```dockerfile # 使用官方的 MySQL 容器为基础 FROM mysql:5.7 # 设置环境变量 ENV MYSQL_ROOT_PASSWORD=mysecretpassword # 将自定义的配置文件放入镜像中并覆盖默认配置 COPY ./my.cnf /etc/mysql/conf.d/my.cnf # 指定默认端口 EXPOSE 3306 # 运行安装脚本更新数据库密码 CMD ["service", "mysqld", "start", "&&", "sed", "-i", "'s/^bind-address/# bind-address/g'", "/etc/mysql/my.cnf", "&&", "sed", "-i", "'/bind-address/s/#//g'", "/etc/mysql/my.cnf", "&&", "/usr/bin/mysqld_safe"] # 指定运行命令 ENTRYPOINT ["/bin/bash"] ``` ### **解释 Dockerfile 内容** - **FROM**:指定基础镜像,这里选择的是 MySQL 的版本(例如 `mysql:5.7`)。 - **ENV**:设置环境变量,用于MySQL的根密码(需要替换为你实际使用的密码)。 - **COPY**:复制本地文件到镜像内的指定位置,这里是将自定义的 `my.cnf` 配置文件放置在 `/etc/mysql/conf.d/` 目录下,以覆盖默认配置。 - **EXPOSE**:声明容器对外暴露的服务端口,这里MySQL默认的3306端口。 - **CMD** 和 **ENTRYPOINT**:用于指定容器启动时的命令和默认入口点,这里的例子中使用了 Bash shell,并在容器启动后执行 MySQL 自带的安全初始化脚本。 #### 2. **准备自定义配置文件 (`my.cnf`)** 在构建镜像之前,需要有自定义的配置文件 `my.cnf` 存放适当的参数,如监听地址等。 ```ini [mysqld] # 禁止绑定到 localhost,允许从其他主机访问MySQL服务 bind-address = 0.0.0.0 # 其他配置... ``` #### 3. **构建 Docker 镜像** 在包含 `Dockerfile` 和所有必要的自定义文件的目录中,打开终端并执行以下命令构建镜像: ```bash docker build -t my-mysql-image . ``` 这将会创建一个新的 Docker 镜像,并将其命名为 `my-mysql-image`。 #### 4. **运行容器** 一旦镜像构建成功,你可以使用该镜像运行一个容器实例: ```bash docker run -d -p 3306:3306 my-mysql-image ``` 这会启动一个新容器,并映射宿主机的3306端口到容器的3306端口。 ### 相关问题: 1. **如何优化 MySQL Docker 镜像的性能?** - 可以调整内存限制、增加缓存大小、优化日志配置等。 2. **如何安全地管理和维护 MySQL Docker 镜像?** - 应定期更新基础镜像版本、监控日志及系统状态、备份数据以及应用最新的安全补丁。 3. **如果在生产环境中部署 MySQL,需要考虑哪些因素?** - 考虑负载均衡、高可用性、数据备份、性能优化、安全性增强等关键因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值