一、Docker 基本概念
Docker 是一个开源的应用容器引擎,依赖于已存在并运行的 Linux 内核环境。它允许开发者将应用及其依赖包打包到一个轻量级、可移植的容器中,发布到任何流行的 Linux 机器上。容器相互之间不存在任何接口,且性能开销极低。
Docker 本质上制造了一个隔离的文件系统,执行效率几乎等同于所部署的 Linux 主机。Windows 操作系统上使用Docker,需要安装Linux内核,这个过程可以交给Docker Desktop的安装程序完成。Docker Desktop是Docker官方提供的在 Win10 和 macOS 操作系统上的安装Docker的方式,这个方法将先在虚拟机中安装 Linux 然后再安装 Docker 的方法。
镜像 image:相当于是一个 root 文件系统
容器 container:容器是镜像运行时的实例,可以被创建、启动、暂停、停止、删除等,将在容器中运行应用程序,每个容器互不干扰
仓库 repository:用于保存镜像的代码仓库,每个仓库中包含许多Tag,每个Tag对应一个镜像
注册表 registry:存放着多个仓库,相当于镜像源
客户端 client:提供命令行或其他工具使用 Docker
主机 host:用于执行 Docker 容器和守护进程的物理或虚拟的机器
二、Win10中安装使用Docker Desktop
1、安装 Docker Desktop
可从以下链接下载Docker: Accelerated, Containerized Application Development
安装过程中如果提示需要安装 WSL 2,可以根据提示安装WSL 2,WSL表示适用于 Linux 的 Windows 子系统
安装 WSL | Microsoft Learn
2、打开终端Terminal,使用下面的命令,通过仓库名和tag标签的组合拉取下载相应的镜像image
docker pull [repository:tag]
比如执行以下操作:
docker pull tensorflow/tensorflow:1.10.0-gpu
3、可以在 Docker Desktop 中 Images 界面中看到下载的镜像
4、运行该image,需新建container容器,进行配置
指定一下端口映射还是有必要的
或者也可使用下面的命令在terminal中启动容器
docker run -it -p 18888:8888 --rm tensorflow/tensorflow:1.10.0-gpu
参数说明:
-i:表示以交互模式运行容器
-t:表示分配终端,-it即产生一个交互式的终端,不应分离使用
-p:表示指定端口映射,格式为:主机端口:容器端口
--rm:指定容器退出时自动清除文件
三、Docker 常用命令(不定时补充)
容器命令:
0、docker --help 查看命令说明
docker [command] --help
查看命令command的使用说明
1、docker pull:拉取镜像
docker pull [image name]
2、docker run:运行容器
docker run [options] [image name]
-it:产生一个交互式的终端
-d:后台运行,返回容器ID
-p:表示指定端口映射,格式为:主机端口:容器端口
-P: 随机端口映射,容器内部端口随机映射到主机的端口
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致
--name:指定容器名称
--rm:指定容器退出时自动清除文件
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷
3、docker stop:停止一个容器
docker stop [container ID]
4、docker start:启动一个已停止的容器
docker start [container ID]
5、docker restart:重启容器
docker start [container ID]
6、docker exec:进入容器
如果docker run时使用了参数-d后台运行,进入容器时应使用:
docker exec [container ID]
使用docker exec并退出时,不会导致容器停止,但是使用docker attach进入容器退出时会导致容器停止
7、docker export 导出容器
docker export [options] [container ID]
-o:输出到文件
docker export -o temp.tar [container ID]
将容器导出到本地文件temp.tar
8、docker import 导入容器
cat temp.tar | docker import - test:v1
将本地容器文件 temp.tar 导入到镜像 test:v1
docker import [url]
从某个url地址中导入镜像
9、docker rm 删除容器
docker rm -f [container ID]
前置删除一个运行中的容器
10、docker ps 查看正在运行的容器
docker ps [options]
-a:显示所有容器,包括未运行的
-f:根据条件过滤显示内容
-l:显示最近创建的容器
-n:列出最近创建的N个容器
-q:静默模式,只显示容器编号
-s:显示总的文件大小
包含容器ID,镜像名称,端口映射等信息
11、docker port 查看指定容器的端口映射
docker port [container ID]
12、docker logs 查看容器日志
docker logs [options] [container ID]
-f:跟踪日志输出
--since:显示某个时间开始的所有日志
-t:显示时间戳
--tail:列出最新的N条日志
四、Docker 镜像加速
可使用国内服务商提供的 Docker 镜像加速服务
网易:https://hub-mirror.c.163.com/
阿里云:https://<your ID>.mirror.aliyuncs.com
科大镜像:https://docker.mirrors.ustc.edu.cn/
在Docker Desktop中的Settings中设置镜像源,添加JSON字段:
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/", "https://hub-mirror.c.163.com/"]