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 时,这就设计到咱们容器间的通信。
- 应用 docker 建设网络
docker network create test-net
- 将 redis 绑定到此网络
docker run -d --name redis --network test-net --network-alias redis redis
- 批改我的项目中拜访 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 的局部内容,后续会持续更新 ….