Docker

本文介绍了如何使用Dockerfile制作镜像,包括FROM、ADD、EXPOSE和ENTRYPOINT等指令的使用,以及如何解决配置文件外部挂载问题。此外,还讲述了Docker容器与镜像的区别,以及如何进行容器的导入导出。在实践中遇到的DockerMySQL连接问题和解决方案也一并分享。

一、Dockerfile文件制作docker镜像以及解决配置问价外部挂载问题!!!

在这里插入图片描述
FROM 是需要的环境,
ADD 是将你主机的文件放到 docker 目录下 [“本机位置”,”docker位置”]
EXPOSE 开放端口
ENTRYPOINT 启动docker时运行的命令

FROM openjdk:8
ADD [“portalsvr.jar”,“/portalsvr/portalsvr.jar”]
ADD [“application.yml”,“/portalsvr/config/application.yml”]
EXPOSE :8003
ENTRYPOINT [“java”,“-jar”,“/portalsvr/portalsvr.jar” ,“-server”, “-Xms1000m”, “-Xmx2000m”,“–spring.config.additional-location=/portalsvr/config/application.yml”]
这个是为了让springboot的配置文件放到jar包外方便修改https://blog.youkuaiyun.com/qq_39096058/article/details/114835219(可以做一个参考,如果一直读不到application.yml等配置文件可以安装,我上面 写的 “–spring.config.additional-location=/portalsvr/config/application.yml”)。(这我他么网上找了两天才解决的,简直了。)

1.Docker制作镜像

执行 docker build -t test:test .
-t 之后test:test 第一个是你打镜像的 名字 ,”:”后面的是版本号
后面有个 “.” 这个点 是目录 他会自己找你 目录中的 Dockerfile 文件 (我之前的,目录我放在最上面的)
在这里插入图片描述
执行成功之后 可以 执行 docker images 查看镜像是否部署成功
在这里插入图片描述
可以看到是部署成功了的
部署成功之后可以执行
docker run -p ip:ip -d --name test [IMAGE_ID/REPOSTTORY:TAG]
制作成容器
然后可以用docker ps 查看 (只查看运行的容器)
如果要查看全部容器用 docker ps -a
在这里插入图片描述

-d 是后台运行 -p 端口开放 左边是对外开放的端口 ,右边是docker内部端口
–name 是docker打包容器之后容器的名字

2.docker 进入容器内部

首先启动容器
docker start 容器id/容器名字
在这里插入图片描述

docker exec -it 容器id/容器名字 bash
在这里插入图片描述

一般来说进去是没有vim的
如果需要的话,执行一下命令
apt-get update
然后在执行
apt-get -y install vim

3.Docker 内部文件和外部文件交互

docker内部到外部
docker cp 容器id:[内部文件位置] [外部文件位置]
Docker 外部到内部
Docker cp [外部文件位置] 容器id:[内部文件位置]

在这里插入图片描述
这里特别提一句
镜像和容器的区别 ,image 是镜像 ,一个镜像可以制作成多个容器 。 镜像可以从官网上下载也可以通过编写Dockerfile自己制作。
容器是docker run 跑出来的 通过docker ps / ps -a 查看的就是容器。
通过docker images 查看的就是就是镜像。

二、Docker 导入导出

	docker 容器也是可以制作成新的镜像的,当你拉一个新的镜像然后修改之后你想要给别人你的镜像,或者打给被人用
		作为刚刚接触docker 的我 傻了吧唧的直接用docker save > xxx.tar IMAGE_ID 打出来总是是他么网上刚拉下来的版本。
	网上一查才发现,我擦嘞,原来要提交之后才是现在用的,(主要是刚开始对容器和镜像的理解没有深入。搞不清楚,就傻傻分不清楚)。
Docekr commit xxx(自己取名字) IMAGE_ID/[REPOSITORY[:TAG]]

这个命令就是最基本的制作成镜像了
想要了解更加详细的就去看
https://www.runoob.com/docker/docker-commit-command.html
Docker 导入导出
这个网上又比较详细的解释我直接放个连接了
https://blog.youkuaiyun.com/ncdx111/article/details/79878098

三、Docker踩坑

第一个docker mysql连接不到外部的数据库
在这里插入图片描述
我也不知道为啥反正改就完事!

第二个,也是莫名其妙的傻逼问题
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
就这个问题不知道为啥
解决办法如下
加这个玩意儿 useSSL=false
例子:jdbc:mysql://192.168.221.201:3306/jdbc?useSSL=false
不过我加上之后报了另一个错
Public Key Retrieval is not allowed
好家伙,解决一个又来一个。
解决办法加上 allowPublicKeyRetrieval=true
反正我都加上的就好了,
jdbc:mysql://192.168.137.1:3306/jdbc?useSSL=false&allowPublicKeyRetrieval=true

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值