Docker进阶学习

RootRoot -
Docker进阶学习
Docker的理解

​ Docker就是一个轻量化的容器,可以把系统尽可能,按容器拆分到最小,通过指定的命令进行构建、分发、部署。该笔记只针对Docker的进阶使用,不去详解Docker的安装,简单容器的Docker安装。

Docker部署自定义的项目

​ 我们都实操过通过Docker安装Redis、Mysql并且通过文件挂载、映射端口,将容器与服务器打通。那么如何使用Docker来安装自定义的项目呢?

启动自定义镜像

示例项目代码地址:https://github.com/gzyunke/test-docker

拉取示例代码

image-20230304下午52745020

使用命令Docker命令启动

先进行编译【设置镜像名、版本号】

docker build -t docker-test:version-1 .

image-20230304下午53249437

​ 服务器会根据dockerfile文件导入对应的包和环境。

运行构建的docker镜像

docker run -p 8090:8080 --name testDocker docker-test:version-1

image-20230304下午53541226

-p 与服务器的端口挂载-d 后台运行--name 指定docker容器的名称

常用的一些命令

`docker ps` 查看当前运行中的容器
`docker images` 查看镜像列表
`docker rm container-id` 删除指定 id 的容器
`docker stop/start container-id` 停止/启动指定 id 的容器
`docker rmi image-id` 删除指定 id 的镜像
`docker volume ls` 查看 volume 列表
`docker network ls` 查看网络列表
目录挂载

​ 日常开发中我们常常在docker启动容器后可能后续开发中代码还会修改,需要重新启动,如果我们生成的一些文件,比如日志这些如果没有和服务器挂载就会在容器关闭或者重启后消失。因此我们需要将Docker文件和服务器文件进行挂载,这样不管我们容器启动多少次,都能把文件持久化到服务器上。

​ Docker提供了三种挂载方式

bind mount 直接把宿主机目录映射到容器内,适合挂代码目录和配置文件。可挂到多个容器上volume 由容器创建和管理,创建在宿主机,所以删除容器不会丢失,官方推荐,更高效,Linux 文件系统,适合存储数据库数据。可挂到多个容器上tmpfs mount 适合存储临时文件,存宿主机内存中。不可多容器共享。【一般不用】

image-20230304下午54753287

将代码文件和docker容器文件挂载

docker run -p 8090:8080 -v /docker_test/test-docker:/app  --name testDocker1 docker-test:version-1     

注意:挂载后Docker会映射到服务器的本地代码,所以服务器也需要安装项目的运行镜像哦[这里是npm镜像,可以用yum安装一下];

我们启动下新的镜像并访问

image-20230304下午60905365

可见我们并没有重新打包,docker就可以读到我们最新的修改。

目录挂载也常用用在我们启动微服务的时候,将用Docker部署的微服务的日志映射到我们的服务器,不但持久化而且不需要进入容器就能给访问。

多容器通信

​ 场景:比如我们在同一台服务器安装了mysql、redis且部署了项目,而且项目中需要去使用redis,mysql时,这就设计到我们容器间的通信。

使用docker建立网络

docker network create test-net

将redis绑定到此网络

docker run -d --name redis --network test-net --network-alias redis redis

修改项目中访问redis的代码

取消注释

image-20230304下午62954662

image-20230304下午62937997

​ 重新启动我们的项目

docker run -p 8090:8080 -v /docker_test/test-docker:/app --network test-net -d --name testDocker2 docker-test:version-1

访问http://ipaddress:8090/redis

image-20230304下午63123407

发布与部署

我们可以将我们的docker文件上传到镜像库,例如阿里云镜像库这些。

构建镜像

docker build -t ${SERVICE_NAME}:${VERSION} .

docker tag xxxx 镜像地址路径

上传镜像

docker push ${SERVICE_NAME}:${VERSION}

然后发布时使用docker pull直接拉取对应的镜像即可

以上是学习Docker的部分内容,后续会继续更新....

特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

Tags 标签

docker微服务linuxdockerfile

扩展阅读

加个好友,技术交流

1628738909466805.jpg