Docker 简介和安装

安装步骤省略。
注意:windows 系统安装 docker desktop 注意开启 Hyper-V。
image.png
以 windows11 为例:

  1. 打开 Windows 功能 设置:

设置→ 应用 → 可选功能 → 更多 Windows 功能

  1. 勾选 Hyper-V 所有选项

image.png
如果 Hyper-V 虚拟机监控程序无法勾选,则需要在 BIOS 开启虚拟化(每个主板配置菜单不一样,基本都在 CPU 选项卡中)。
具体可在 任务管理器-性能选项卡中查看是否启用虚拟化技术。
image.png
如果安装过程中出现下图错误,则需要安装最新版本的 WSL2
image.png
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

镜像加速器 镜像加速器地址
Docker 中国官方镜像 https://registry.docker-cn.com
DaoCloud 镜像站 http://f1361db2.m.daocloud.io
Azure 中国镜像 https://dockerhub.azk8s.cn
科大镜像站 https://docker.mirrors.ustc.edu.cn
阿里云 https://.mirror.aliyuncs.com
七牛云 https://reg-mirror.qiniu.com
网易云 https://hub-mirror.c.163.com
腾讯云 https://mirror.ccs.tencentyun.com

快速安装 Docker 镜像

制作自己的镜像

构建 react 应用

  1. 使用 creat-react-app 命令创建 react 应用

    1. create-react-app react-demo
  2. 在根目录下创建 Dockerfile,内容如下 ```dockerfile

    定制镜像需要的基础镜像 node,默认会从 hub 上获取,别名为 build-react

    从 node 镜像开始构建镜像

    FROM node AS build-react

将当前目录所有文件拷贝至 /react-demo

COPY . /react-demo

指定工作目录为 /react-demo

WORKDIR /react-demo

构建容器执行的命令

RUN npm run build

从 openresty 开始构建镜像

https://hub.docker.com/r/openresty/openresty

FROM openresty/openresty:1.13.6.1-2-centos

删除容器中的目录:/usr/local/openresty/nginx/html

RUN rm -rf /usr/local/openresty/nginx/html

将容器 build-react 中目录 /react-demo/build COPY 至容器 /usr/local/openresty/nginx/html 目录

COPY —from=build-react /react-demo/build /usr/local/openresty/nginx/html

定义数据卷

VOLUME /etc/nginx/conf.d

将容器中的 3000 端口 映射至本机 10089 端口

EXPOSE 10089 3000

容器启动的命令

CMD [“/usr/local/openresty/bin/openresty”, “-g”, “daemon off;”]

  1. 3. 根据 Dockerfile 创建 Image
  2. ```bash
  3. docker image build ./ -t react-demo:1.0.0
  1. 创建并启动容器

    1. docker container create -p 12334:80 react-demo:1.0.0
    2. docker container start xxx # xxx 为上一条命令运行得到的结果
  2. 本机访问 http://localhost:12334/

    构建 node.js 应用

    Docker 常用命令

  • docker ps 查看当前运行中的容器
  • docker images 查看镜像列表
  • docker pull image-id拉取镜像
  • docker search image-id查找镜像
  • docker rmi image-id 删除指定 id 的镜像
  • docker commit更新镜像
    • -m:提交描述信息
    • -a:指定镜像作者
  • docker build构建镜像
    • -t :指定要创建的目标镜像名,如 docker build -t helloworld:1.0 .
    • .:Dockerfile 文件所在目录
  • docker stop <容器ID>停止容器
  • docker restart <容器ID>重启停止的容器
  • docker attach进入容器后台
  • docker exex进入容器后台(不会因退出容器终端而导致容器停止)
  • docker rm <容器ID> 删除指定 id 的容器
  • docker volume ls 查看 volume 列表
  • docker network ls 查看网络列表
  • docker network create新建网络
    • -d:指定 docker 网络类型,有 bridgeoverlay
  • docker run启动容器

    • -i:交互式操作
    • -t:终端
    • -d:后台操作
    • -p:指定端口(本机端口:容器端口)
    • -P:容器内部端口随机映射主机端口
    • —network:容器加入网络

      Dockerfile

  • FROM:从 xxx 镜像构建镜像

  • RUN:执行后面跟着的命令行命令。 docker build 时运行
    • shell格式
    • exec 格式:["可执行文件", "参数1", "参数2"...]
  • COPY:从源路径拷贝到目标路径
  • ADD:从源路径拷贝到目标路径,如果是tar文件,则拷贝后会解压
  • CMD:docker run 时运行,作用和 RUN 类似
    • 如果存在多个 CMD 命令,仅最后一个生效
  • ENTRYPOINT:
  • ENV:设置环境变量
  • ARG:构建参数,作用和 ENV 一致,不过作用域不一样。
    • 仅对 Dockerfile 内有效
  • VOLUME:挂载数据卷
    • VOLUME ["路径1", "路径2", ...]
    • VOLUME <路径>
  • EXPOSE:声明端口(<本机端口>: <容器端口>
  • WORKDIR: 指定工作目录
  • MAINTAINER:镜像维护者
  • USER:为 RUN、CMD、ENTRYPOINT 指定运行用户

    docker-compose.yml

  • version:

  • build:
  • context:
  • dockerfile
  • args
  • labels
  • target
  • cap_add / cap_drop
  • cgroup_parent
  • command
  • container_name
  • depends_on
  • deploy

目录挂载

多容器通信

Docker Compose

如果项目中依赖更多的服务,则管理的容器就更加多,每个都要单独配置运行,指定网络,这个时候可以用 docker-compose 把xiang

发布和部署

备份和迁移数据