- Docker 简介和安装
- 快速安装 Docker 镜像
- 制作自己的镜像
- 定制镜像需要的基础镜像 node,默认会从 hub 上获取,别名为 build-react
- 从 node 镜像开始构建镜像
- 将当前目录所有文件拷贝至 /react-demo
- 指定工作目录为 /react-demo
- 构建容器执行的命令
- 从 openresty 开始构建镜像
- https://hub.docker.com/r/openresty/openresty">https://hub.docker.com/r/openresty/openresty
- 删除容器中的目录:/usr/local/openresty/nginx/html
- 将容器 build-react 中目录 /react-demo/build COPY 至容器 /usr/local/openresty/nginx/html 目录
- 定义数据卷
- 将容器中的 3000 端口 映射至本机 10089 端口
- 容器启动的命令
- Docker 常用命令
- 目录挂载
- 多容器通信
- Docker Compose
- 发布和部署
- 备份和迁移数据
Docker 简介和安装
安装步骤省略。
注意:windows 系统安装 docker desktop 注意开启 Hyper-V。
以 windows11 为例:
- 打开 Windows 功能 设置:
设置→ 应用 → 可选功能 → 更多 Windows 功能
- 勾选 Hyper-V 所有选项
如果 Hyper-V 虚拟机监控程序无法勾选,则需要在 BIOS 开启虚拟化(每个主板配置菜单不一样,基本都在 CPU 选项卡中)。
具体可在 任务管理器-性能选项卡中查看是否启用虚拟化技术。
如果安装过程中出现下图错误,则需要安装最新版本的 WSL2
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:// |
七牛云 | https://reg-mirror.qiniu.com |
网易云 | https://hub-mirror.c.163.com |
腾讯云 | https://mirror.ccs.tencentyun.com |
快速安装 Docker 镜像
制作自己的镜像
构建 react 应用
使用
creat-react-app
命令创建 react 应用create-react-app react-demo
在根目录下创建 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;”]
3. 根据 Dockerfile 创建 Image
```bash
docker image build ./ -t react-demo:1.0.0
创建并启动容器
docker container create -p 12334:80 react-demo:1.0.0
docker container start xxx # xxx 为上一条命令运行得到的结果
-
构建 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 文件所在目录
- -t :指定要创建的目标镜像名,如
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 网络类型,有
bridge
、overlay
- -d:指定 docker 网络类型,有
docker run
启动容器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