背景
因为项目中有用到docker,趁着周末时间,快速看下docker的相关基础知识,并记录看的过程中遇到的问题
windows10 docker环境搭建
- Docker Desktop Windows 10 下载地址hub.docker.com/editions/co…
- 第一次安装成功后,打开有可能出现 wsl 2版本太低。在cmd直接运行指令:
wsl --update # 一键更新,更新失败需要手动下载
复制代码
或者直接下载最新版本aka.ms/wsl2kernel/
- 在国内下载国外资源,可以使用国内加速器服务。windows下docker->Docker Engine(lunix 下/etc/docker/daemon.json)中直接配置为
{
"registry-mirrors": [
"https://reg-mirror.qiniu.com/" # 加速器
],
"insecure-registries": [
"127.0.0.3:8082/" # 同步时如果存在http与https,需要设置。一般指的时私库的服务地址
]
}
复制代码
配置参数,需要重启下docker服务。更多参数查阅过官方推荐配置docs.docker.com/engine/refe…
完成配置后,需要查看对应配置,输入指令:
docker info
复制代码
docker 基础概念
- docker:操作系统层面的虚拟化技术。就是程序运行的环境。方便创建和使用容器.它包含三个基本概念:镜像、容量、仓库
- 镜像image:是一个特殊的文件系统,提供容器运行时所需的程序、库、资源、配置等
- 容量Container:容器是镜像运行时的实体。相当于面相对象编程中的类与实例
- 仓库Repository:存放镜像的地方
- docker registry:集中存储、分发镜像的服务。一个docker registry 可以包含多个仓库,每个仓库可以包含多个标签,每个标签对应一个镜像
docker 常用的基础命令
docker search hello-world # 搜索hello-world镜像
docker pull hello-world # 获取hello-world镜像
docker run hello-world # 运行一个docker镜像,产生一个容器实例(也可以通过镜像id前三位运行)
docker image ls # 查看本地所有镜像
docker images # 查看docker镜像
docker image rm hello-world # 删除hello-world镜像
docker ps # 列出正在运行的容器(如果创建容器中没有进程正在运行,容器就会立即停止)
docker ps -a # 列出所有运行过的容器记录,q列出编号
docker save hello-world > d:\hello.tar.gz # 导出docker镜像至本地
docker load < d:\hello.tar.gz #导入本地镜像到docker镜像库
docker container ls -all # 列出所有容器包括终止的
docker rm e56933f77a0c # 删除容器编号
docker rmi hello-world # 删除hello-world镜像
复制代码
通过Dockerfile 去定制image
- Dockerfile 是一个文本文件,内部包含每一条的指令,每条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建
- FROM 一般是指定基础镜像
- RUN 命令是image文件构建阶段执行,执行结果都会打包进入image文件(可以存在多个RUN指令)
- CMD 命令是容器启动后执行,默认是只有一个CMD命令
- && 可以串联各个命令,避免使用过多RUN命令,创建无用层
- 一般使用docker build进行构建
- 可以使用.dockerignore剔除不需要作为上下文传递给Docker引擎
docker build -t nginx:v1 . # 其中.表示是当前目录
复制代码
案例参考www.ruanyifeng.com/blog/2018/0… 定制镜像。 有点小遗憾的是,家里网速太差了,运行到安装的最后一步,还没成功完全下载好。