Docker 简要介绍
date
Feb 9, 2022
slug
docker-info
status
Published
tags
Docker
summary
type
Post
Docker 是什么
安装 Docker
- 使用脚本安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
VERSION=19.03.1
安装指定版本,不指定为最新版-mirror Aliyun
使用阿里云镜像源加速
- 建立 docker 组
- 启动 Docker CE
- 退出当前终端并注销重新登录
- 配置镜像加速
简单命令
- 获取镜像: docker pull
<image>[:<tag>]
- example: docker pull mongo:3.6
- tag 为空,会默认为 latest ,即最新版本
- 运行容器: docker run [-p
[host_ip]:<host_port>:<container_port>] [-v [host_folder:]<container_folder>] [-d] [--rm] [--name <container_name>] <image>[:<tag>]
- example:
docker run -p 27017:27017 -d --rm --name my_mongo mongo:3.6
- p 为主机端口和容器端口的映射
- v 为挂载主机目录到容器
- d 后台运行容器
- -rm 关闭容器后自动删除
- 进入到容器: docker exec -it <container_name> command
- example:
docker exec -it my_mongo bash
- 删除镜像:
docker rmi <image>[:<tag>]
- 删除 TAG 为 none 的镜像:
docker images | grep none | awk '{print $3}' | xargs docker rmi
- 保存镜像:
docker save <image>[:<tag>] -o filename
- 压缩保存:
docker save <image>[:<tag>] | gzip > filename
- 导入镜像:
docker load -i filename
- 批量导入镜像:
ls -1 *.tar.gz | xargs --no-run-if-empty -L 1 docker load -i
- 镜像迁移到另一个机器:
docker save <image>[:<tag>] | bzip2 | pv | ssh <username>@<hostname> 'cat | docker load'
- 私有仓库登录: docker login
- 出现错误:
Error response from daemon: Get <https://your> host/v2/: x509: cannot validate certificate for your host because it doesn't contain any IP SANs
- 解决方法: 在
/etc/docker/daemon.json
(没有此文件自行新建) 添加 - 然后重启 docker
- 查看所有容器名称、端口映射、状态等
docker ps -a --format '{{.ID}} {{.Names}} {{.Ports}} {{.Status}}'
Dockerfile
- 注意:
- 构建过程中优先执行结果不经常变更的内容(例如 安装系统依赖和Python第三方包)
- Dockerfile 中的每一条命令都会生个可读层 layer ,命令尽量合成一个一并执行
- 能写到 Docker compose file 中的一些配置,就写到 Docker compose file 里面 (比如 环境变量)
- 尽量减少镜像大小(1.安装依赖后清除缓存和下载的安装包,2.删除不需要的文件,中间生成文件,等等)
- 纯粹的数据卷容器,可以是关闭状态,只要有一个容器挂载了数据卷,数据就会一直存在
FROM <image>[:<tag>] [AS <name>]
<image>[:<tag>]
以 image 作为基底构建镜像,tag 为空,默认为 latest[AS <name>]
添加构建别名,如果 Dockerfile 中有多个FROM
即可添加别名,构建时使用-target
参数可以指定构建哪一个
- ENTRYPOINT 和 CMD
- 建议使用 exec 格式
- 多个
.dockerignore
文件 Link - Docker 版本 19.03+
export DOCKER_BUILDKIT=1
- dockerignore 文件名为
< Dockerfile name>.dockerignore
Docker compose-file
- 注意:
- 使用 Docker compose file 可以使用
f
同时指定多个文件,同一个服务的不同配置会自动合并,而相同的配置将会出错
- depends_on
- 设置容器的依赖关系,控制容器的启动顺序