Docker

软件

  • OrbStack:Mac 应用软件,在图形界面管理 Docker 容器,据称速度比官方的 Docker Desktop 快得多。

Docker 简介

Docker 镜像

是一种 UnionFS(联合文件系统),是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下.

镜像同时也很小,因为我们 pull 的镜像剔除了无用的东西,只是一个精简功能版的镜像

下载是一层一层下载,这样便于共享资源。

Docker 容器数据卷

卷就是目录或文件,存在于一个或多个容器中,由 docker 挂载到容器,但不属于联合文件系统,因此能够绕过 Union File System 提供一些用于持续存储或共享数据的特性,卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此 Docker 不会在容器删除时删除其挂载的数据卷。

dockerfile 也就是添加 容器数据卷的一种方式

dockerfile

优势

特性容器虚拟机
启动秒级分钟级
硬盘使用一般为 MB一般为 GB
性能接近原生弱于
系统支持量单机支持上千个容器一般几十个

流程整理

docker search nginx
docker pull nginx
docker images
docker run -it -p 8080:8080 nginx
docker ps
docker stop ff6

Docker 安装
docker 优化

Docker 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
}

docker 常用命令

参考资料