安装与配置

Docker 有利于更轻松的部署,更一致的运行环境,同时相比传统的虚拟机,开销更小

基本概念:镜像 image容器 container仓库 repository

从仓库获取镜像,从镜像启动容器

国内镜像源:

Docker 也有 hello world:

docker pull hello-world
docker run hello-world

镜像

Docker Hub 上有大量镜像,获取的方法是:

docker pull 仓库名[:标签]

docker image ls 列出镜像,docker image rm 镜像名或 ID 删除镜像

Dockerfile 定制镜像

构建方法:

docker build -t 目标镜像名 上下文路径

常见指令:

  • FROM 指定镜像
  • RUN 执行指令
  • COPY 用于将构建的上下文目录中的文件复制到容器中
  • CMDRUN 功能类似,常见的写法:CMD ["可执行文件", "参数1", "参数2"...]
  • WORKDIR 切换工作目录,注意 CMD 不是真正的命令行,不能使用 cd 切换工作目录
  • ENV 设置环境变量,ENV <key> <value>

容器

启动容器有两种方式:

  • 新建并启动:docker run
  • 启动已终止容器:docker container start

分配伪终端 -t,让标准输入保持打开 -i,后台运行 -d

exec 能够进入容器

数据管理

一般来说,容器产生的数据都会保持在容器中,但是对于数据库之类则不然,通常需要 volume 来连通外部

这样即使容器被删除了,数据也不会丢失

使用方法为:-v volume名:容器中的数据路径

挂载本机目录:-v 本地目录:容器中的数据路径

网络

外部访问容器:-p 外部端口号:容器内部端口号

容器互联

创建网络:docker network create -d bridge my-net

运行容器并连接到网络:--network my-net

Docker Compose

Dockerfile 可以定义一个单独的应用容器,但通常需要多个容器互相配合,这时候 docker-compose.yml 就很有用了

模板文件常见的写法:

version: "3"

services:
webapp:
image: examples/web
ports:
- "80:80"
volumes:
- "/data"

运行方法:docker compose up,可以加上 -d 等参数,如果不想容器被重新创建,可以加上 --no-recreate