Docker学习笔记
Docker 学习笔记
Docker的简介与安装
Docker 是一个应用打包、分发、部署的工具
你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,
而普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件。
跟普通虚拟机有支持系统多,性能好,命令快速部署,稳定性好的优点
打包,分发,部署
使用:就是把你软件运行所需的依赖、第三方库、软件打包到一起,变成一个安装包,把你打包好的“安装包”上传到一个镜像仓库,其他人可以非常方便的获取和安装,拿着“安装包”就可以一个命令运行起来你的应用,自动模拟出一摸一样的运行环境,不管是在 Windows/Mac/Linux,还能多版本软件共存
镜像加速源
镜像加速器 | 镜像加速器地址 |
---|---|
Docker 中国官方镜像 | https://registry.docker-cn.com |
DaoCloud 镜像站 | http://f1361db2.m.daocloud.io |
Azure 中国镜像 | https://dockerhub.azk8s.cn |
科大镜像站 | https://docker.mirrors.ustc.edu.cn |
阿里云 | https://ud6340vz.mirror.aliyuncs.com |
七牛云 | https://reg-mirror.qiniu.com |
网易云 | https://hub-mirror.c.163.com |
腾讯云 | https://mirror.ccs.tencentyun.com |
docker安装软件
docker run -d -p 6379:6379 –name redis redis:latest
- -d:后台运行容器,并返回容器ID
- -p:会随机映射一个 49000~49900 的端口到内部容器开放的网络端口
- –name 取名
- docker images 查看镜像信息列表 镜像是静态的
docker-compose up -d 根据docker-compose 文件来安装
制作自己的镜像
编写Dockerfile
FROM node:11 |
#Build为镜像和运行 |
#相关命令 |
目录挂载
通过目录挂载可解决
- 使用 Docker 运行后,我们改了项目代码不会立刻生效,需要重新
build
和run
,很是麻烦。 - 容器里面产生的数据,例如 log 文件,数据库备份文件,容器删除后就丢失了。
挂载方式
bind mount
直接把宿主机目录映射到容器内,适合挂代码目录和配置文件。可挂到多个容器上volume
由容器创建和管理,创建在宿主机,所以删除容器不会丢失,官方推荐,更高效,Linux 文件系统,适合存储数据库数据。可挂到多个容器上tmpfs mount
适合存储临时文件,存宿主机内存中。不可多容器共享。
bind mount` 方式用绝对路径 `-v D:/code:/app |
多容器通讯
我们把前面的 Web 项目增加一个 Redis 依赖,多跑一个 Redis 容器,从 Web 容器访问 Redis 容器,我们只需要把他们放到同个网络中就可以了。
# 创建名为test-net 的网络 |
这样我们就可以用多个容器去运行这个项目
Docker - Compose
如果你是安装的桌面版 Docker,不需要额外安装,已经包含了,docker-compose 把项目的多个服务集合到一起,一键运行。
要把项目依赖的多个服务集合到一起,我们需要编写一个docker-compose.yml
文件,描述依赖哪些服务
version: "3.7" |
在docker-compose.yml
文件所在目录,执行:docker-compose up
就可以跑起来了。
常用
在后台运行只需要加一个 -d 参数docker-compose up -d
查看运行状态:docker-compose ps
停止运行:docker-compose stop
重启:docker-compose restart
重启单个服务:docker-compose restart service-name
进入容器命令行:docker-compose exec service-name sh
查看容器运行log:docker-compose logs [service-name]
发布镜像
创建镜像库
命令行登录账号:
docker login -u username
新建一个tag,名字必须跟你注册账号一样
docker tag test:v1 username/test:v1
推上去
docker push username/test:v1
部署试下
docker run -dp 8080:8080 username/test:v1
docker run -it
: /bin/bash 拉取镜像
docker pull
:
docker-compose 中也可以直接用这个镜像了
version: "3.7" |