创建镜像

  1. 创建 Dockerfile 文件,无后缀名
  2. 创建镜像,同级目录下执行命令
docker build -t getting-started .

-t 标记了镜像,该镜像的名字为 getting-started, . 表示在当前目录寻找 Dockerfile

运行容器

  1. 使用 docker run 命令
docker run -dp 3000:3000 getting-started
  • -d - 后台运行容器
  • -p 3000:3000 - 映射主机端口和容器内端口
  • getting-started - 使用的镜像

提交镜像

  1. 登陆 docker, docker login -u YOUR-USER-NAME
  2. 使用 docker tag 命令重命名本地镜像,需要加上 docker 账户的名字
    `docker tag getting-started YOUR-USER-NAME/getting-started
  3. 提交镜像,执行命令 docker push YOUR-USER-NAME/getting-started

数据持久化

  • 不同容器之间数据无法互相访问
  • 每次重新部署容器,非公有数据会重置
  • 映射公有目录实现数据共享
Named VolumesBind Mounts
存储路径docker 自动选择开发者控制
映射案例(using -v)my-volume:/usr/local/data/path/to/data:/usr/local/data
Populates new volume with container contentsyesno
支持卷驱动程序yesno

路径挂载

将数据挂载到特定目录下

容器卷

docker volume create [name]
  • 类似建立一个磁盘空间,挂载至容器
  • 与路径挂载的区别在于非 root 用户无法从外部访问
  • 好处是不需要关心数据存放位置,docker 会自行处理

复合应用

通过创建同一网络 docker network create [net name] 将两个不同的容器互联互通。

使用 docker compose

  1. 在项目目录下创建docker-compose.yml文件。
  2. 根据 run 时的信息配置镜像、命令、映射、环境变量等信息
  3. 使用 docker compose up -d 后台启动应用
  4. 使用docker compose down停止应用,如果需要删除卷,则需要添加--volumes命令。

docker启动后添加端口映射

  1. 提交当前运行中的容器为新镜像
docker commit [containerid] [image-name]
  1. 运行镜像并添加添加端口
docker run -idp [new-port]:[port] [image-name] /bin/bash

参考文章

docker官方文档
docker启动后添加端口映射

Q.E.D.