Docker的了解

Docker就是一个轻量化的容器,能够把零碎尽可能,按容器拆分到最小,通过指定的命令进行构建、散发、部署。该笔记只针对Docker的进阶应用,不去详解Docker的装置,简略容器的Docker装置。

Docker部署自定义的我的项目

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

启动自定义镜像

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

  • 拉取示例代码

  • 应用命令Docker命令启动

    • 先进行编译【设置镜像名、版本号】
    • docker build -t docker-test:version-1 .

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

    • 运行构建的docker镜像

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

      • -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 适宜存储临时文件,存宿主机内存中。不可多容器共享。【个别不必】

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

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

留神:挂载后Docker会映射到服务器的本地代码,所以服务器也须要装置我的项目的运行镜像哦[这里是npm镜像,能够用yum装置一下];

咱们启动下新的镜像并拜访

可见咱们并没有从新打包,docker就能够读到咱们最新的批改。

目录挂载也罕用用在咱们启动微服务的时候,将用Docker部署的微服务的日志映射到咱们的服务器,岂但长久化而且不须要进入容器就能给拜访。

多容器通信

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

  1. 应用docker建设网络

docker network create test-net

  1. 将redis绑定到此网络

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

  1. 批改我的项目中拜访redis的代码

勾销正文

重新启动咱们的我的项目

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

公布与部署

咱们能够将咱们的docker文件上传到镜像库,例如阿里云镜像库这些。

  • 构建镜像

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

docker tag xxxx 镜像地址门路

  • 上传镜像

docker push ${SERVICE_NAME}:${VERSION}

而后公布时应用docker pull间接拉取对应的镜像即可

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