Docker
软件
- OrbStack:Mac 应用软件,在图形界面管理 Docker 容器,据称速度比官方的 Docker Desktop 快得多。
Docker 简介
Docker 镜像
是一种 UnionFS(联合文件系统),是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下.
镜像同时也很小,因为我们 pull 的镜像剔除了无用的东西,只是一个精简功能版的镜像
下载是一层一层下载,这样便于共享资源。
Docker 容器数据卷
卷就是目录或文件,存在于一个或多个容器中,由 docker 挂载到容器,但不属于联合文件系统,因此能够绕过 Union File System 提供一些用于持续存储或共享数据的特性,卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此 Docker 不会在容器删除时删除其挂载的数据卷。
dockerfile 也就是添加 容器数据卷的一种方式
优势
| 特性 | 容器 | 虚拟机 |
|---|---|---|
| 启动 | 秒级 | 分钟级 |
| 硬盘使用 | 一般为 MB | 一般为 GB |
| 性能 | 接近原生 | 弱于 |
| 系统支持量 | 单机支持上千个容器 | 一般几十个 |
流程整理
docker search nginx
docker pull nginx
docker images
docker run -it -p 8080:8080 nginx
docker ps
docker stop ff6Docker Compose
Docker Compose 是 docker 提供的一个命令行工具,用来定义和运行由多个容器组成的应用。
使用 compose,我们可以通过 YAML 文件声明式的定义应用程序的各个服务,并由单个命令完成应用的创建和启动。
version: "3.1"
services:
nginx:
restart: always
# image是指定服务的镜像名称或镜像ID。如果镜像在本地不存在,Compose将会尝试拉取镜像。
image: nginx
ports:
- 8091:80
#挂载一个目录或者一个已存在的数据卷容器,可以直接使用 [HOST:CONTAINER]格式,或者使用[HOST:CONTAINER:ro]格式,后者对于容器来说,数据卷是只读的,可以有效保护宿主机的文件系统。
volumes:
- ./nginx/conf.d/:/etc/nginx/conf.d
- ./frontend/dist/:/var/www/html/
- ./static/:/static/
app-pm2:
container_name: app-pm2
#构建容器
#服务除了可以基于指定的镜像,还可以基于一份Dockerfile,在使用up启动时执行构建任务,构建标签是build,可以指定Dockerfile所在文件夹的路径。Compose将会利用Dockerfile自动构建镜像,然后使用镜像启动服务容器。
build: ./backend
ports:
- "3000:3000"启动
docker-compose up
// or
docker-compose up -d配置镜像
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"http://dockerhub.azk8s.cn/" ],
"insecure-registries": [],
"debug": true,
"experimental": false
}