Docker

发布于:2025-05-15 ⋅ 阅读:(10) ⋅ 点赞:(0)

目录

1、Docker的安装 

2、Docker部署MySQL

命令解读

3、Docker基础(docker的基础命令)

​编辑

4、数据卷挂载(容器中数据如何修改和持久化?)

本地目录挂载

5、自定义镜像(如何在docker上打jar包)

6、docker容器网络互联

7、部署项目

7、1部署java应用

7、2部署前端

​编辑

​编辑​编辑

7、3   Dockercompose(一键部署)


1、Docker的安装 

 

2、Docker部署MySQL

Docker从镜像仓库拉取应用镜像,这个应用镜像包含应用执行所有要的所有依赖、环境、配置、系统函数库等东西,这意味着这个应用可以在任意一个环境中运行。我们可以忽略在安装时需要关注的依赖和配置等东西,只需要通过Docker下载应用镜像即可。 

命令解读

 -p 3306:3306其实是from主机的3306端口映射到主机内部容器3306端口的意思,这样我们只需要链接主机而不需要连接容器也可以访问应用。

3、Docker基础(docker的基础命令)

image(镜像)

Docker ps展示的是容器中正在运行中的进程,添加-a会把stop了的进程也展示。

 docker exec -it nginx bash 它的意思是打开容器的终端,这样我们就可以以bash命令行的形式操作容器。exit退出。可以发现容器内是由自己的文件系统的。

在删除容器的时候有可能容器在运行不能删,加-f可以强制删除。 

命令的别名,打开这个文件

4、数据卷挂载(容器中数据如何修改和持久化?)

通过官方的镜像应用查询NGINX的静态资源在哪个目录下

但是由于我们镜像里面只包含应用执行所必须的系统函数库,所以Linux的ll vim等命令都不会生效

这个时候就需要用到数据卷来对静态资源进行修改,也就是在主机目录下和NGINX目录做映射,在主机下的修改同步到NGINX里。

创建:

详情:

然后我们就可以在主机目录下对文件进行修改,它会同步修改到NGINX容器内。

本地目录挂载

本地比如对MySQL挂载。MySQL它本身是由一个匿名数据卷的,它在创建MySQL容器时自动生成,故而主机会同步一份MySQL容器的数据。我们在MySQL进行数据迁移时,需要对老MySQL进行删除,老容器删除但数据卷不会删除,主机内的同步数据也不会删除,可以借此来恢复数据。但是系统自动生成的数据卷目录太长,也不直观,所以我们用自定义本地目录来为MySQL创建数据卷,注意要加/或./,否则docker会把它识别为名称从而存在默认目录下。这也是docker的数据持久化的一种方式

主机需要先创建对应的目录

执行 docker run -d\

5、自定义镜像(如何在docker上打jar包)

分层的镜像有助于代码复用,在下载其他镜像时如果有些层已经存在就不需要再下载

dockerFile中这几个指令就可以实现打jar包并运行 。

 我们也可以直接下载jdk的镜像,它会包含jre(jvm)和系统函数库,所以我们只需要关注拷贝jar包和定义启动命令

具体实现:

jar包和Dockerfile在同一目录

执行docker build -t 镜像名 dockerfile地址 这样一个格式创建镜像

启动自定义容器

6、docker容器网络互联

docker自己存在一个虚拟网卡,它会在启动容器时会为每个容器默认分配一个IP地址,但是这个IP地址是自动分配的且不定的,可能容器启动后IP地址就发生了改变。

创建了18网段的网络

连接容器到网段

如果我们在容器启动时就指定连接的网络,它就不会连接默认网络

7、部署项目

7、1部署java应用

数据库连接配置使用配置文件中的一部分做数据库连接

通过容器名和MySQL互联

通过IP和MySQL连接

上传完jar包和dockerFile文件后,创建完容器就可以启动容器,注意端口不要冲突哦

7、2部署前端

创建一个新的容器,因为我们的配置文件也要挂载

在NGINX的配置文件中, 我们指定不同的端口访问不同的页面

在重新启动容器时,监听两个端口,挂载html静态资源和conf配置文件。

7、3   Dockercompose(一键部署)

DockerCompose文件内的语法和正常的docker run语法差别不算大

注意数据卷使用的是相对路径,那我们启动DockerCompose时就要注意当前位置。

在Compose文件的其他部分(如服务定义)引用该网络时使用名称hm-net,而name属性是它的真实名称(通过docker network ls可见的名称)。