docker 生成镜像的几个问题

根据jdk8.tar.gz 打包Jdk8 镜像失败

首选做准备工作

  • ① 新建一个空的目录(以jdktemp为例),然后在目录中新建一个文件,命名为Dockerfile

  • ② 拷贝课前资料提供的 jdk8.tar.gz 到这个目录中

在这里插入图片描述

  • ③ 编写Dockerfile文件:

在这里插入图片描述
在这里插入图片描述

From centos

MAINTAINER gnauhsil

RUN mkdir /usr/local/jdk8

ADD jdk8.tar.gz /usr/local/jdk8

ENV JAVA_HOME /usr/local/jdk8/jdk1.8.0_144

ENV JRE_HOME /usr/local/jdk8/jdk1.8.0_144/jre

ENV PATH $JAVA_HOME/bin:$PATH

  • a )基于java:8-alpine作为基础镜像

  • b )将app.jar拷贝到镜像中

  • c )暴露端口

  • d )编写入口ENTRYPOINT

  • ④ 使用docker build命令构建镜像

  • ⑤ 使用docker run创建容器并运行

步骤6:运行命令:生成镜像

docker build -t java:8-alpine .  (不要忘记这个点.)

在这里插入图片描述
之后会生成镜像,如上图所示: 使用 docker images命令进行查看

镜像生成成功以后可以使用命令先进入到容器中运行 java -version命令看能否成功,先前编写的 Dockerfile文件的版本号错误导致报错 :bash: java: command not found

docker run -it java:8-alpine  /bin/bash
 java -version

在这里插入图片描述
进入容器以后 ctrl + d 可以退出容器命令模式

运行容器

docker run -dit --name java8 java:8-alpine

进入容器以后 ctrl +d 可以退出容器

运行镜像报错差不多是网络ip错误,在网上说重启docker即可解决

systemctl restart docker

相关链接:https://blog.csdn.net/ystyaoshengting/article/details/102543163

docker run --name web -p 8090:8090 -d javaweb:1.0
c4489a0b442af92f597ac80476ea4d6de7e0b5993446d9f07bd799412442ae2d
docker: Error response from daemon: driver failed programming external connectivity on endpoint web (3800bd001b28af0ef6d80ec954cd012e98dda038804ada3817a7a4ecffb8fec0): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8090 -j DNAT --to-destination 172.17.0.6:8090 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1)).

运行mysql5.7.25 镜像失败

docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql5 (25d97ccf16344797d0d679b9f3d0d27fe29a769f2c311b3390900d591065d2e5): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use.

抱以上错误,原因是我的docker环境是后装的,在原来的虚拟机上已经有mysql服务占用了3306端口所以导致镜像无法运行成为容器。把原来的mysql服务停用就可以了。

在这里插入图片描述

systemctl status mysqld.service  (查看服务状态)

systemctl stop mysqld.service    (关闭服务,对应的端口自然也就没有服务占用了)

systemctl disable mysqld.service  (关闭服务开机自启动)
docker run -d --name mysql5 -p 3306:3306 -v /tmp/mysql/data:/var/lib/mysql -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf -e MYSQL_ROOT_PASSWORD=123 mysql:5.7.25

启动成功:
在这里插入图片描述

向daemon.json文件添加内容导致docker重启失败

在这里插入图片描述
在这里插入图片描述
原因就在于daemon.json文件是一个JSON文件 添加内容时需要加一个 ,(逗号) 忘了加

重加载

systemctl daemon-reload

重启docker

systemctl restart docker

docker run 命令常用参数

在这里插入图片描述

–start always 跟随docker一起启动

相关参考链接:https://blog.csdn.net/qq_47346664/article/details/119887657

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PY_XAT_SFZL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值