Docker是统一开发、测试和部署环境的软件系统环境管理工具,自2013年开始兴起。与传统的虚拟机相比,Docker共享内存,减少了资源开销。
Docker 有三大核心组件:repositories(仓库)、images(镜像)、container(容器)。其所有应用及操作,均围绕这三类组件开展。
repositories(仓库)是集中存放Docker镜像的场所,就像放置软件安装光盘的光盘盒。它一般布置在远程的云服务器上,有私有仓库和公共仓库之分(一般公共仓库就是指 DockerHub)。每个仓库中可以存储多个镜像,且每个镜像上都可以有不同的标签。
images(镜像)是创建 container(容器)的模板,相当于系统安装光盘。它包括操作系统和App(应用程序)的运行环境,可以到 repositories(仓库)中去下载。
container(容器)是根据 images(镜像)创建的一个实际的(虚拟)软件运行环境,使用Docker时,我们的应用程序就运行在其中。
Docker服务是一种典型的C/S架构,算上云端的镜像仓库,它由三部分构成:DockerClient、DockerHost 和 DockerRegistry。如下图所示:
DockerClient 是 Docker 服务程序与用户(使用者)的交互界面,一般为 Doc 命令行窗口形式,它负责接收 Docker 操作指令并返回操作结果及输出日志。
DockerHost 是 Docker 服务的后台管理程序,它负责按用户指令操作 Docker 容器与镜像及与仓库的通信。它可以运行在本机或本地服务器上(如 Windows 系统下安装的 Docker Desktop)。
DockerRegistry 是 Docker仓库的管理程序,它负责根据 DockerHost 的请求来收发镜像。它一般运行在云端,由专业的云服务提供商(或公司的对应技术部门)负责,不需要 Docker 使用者做任何操作。
Docker 的常用命令如下图所示,主要涉及获取镜像、创建及进入容器、从容易生成镜像和上传镜像四类。

获取镜像常用 build 和 pull 命令,如:
# docker pull 镜像名称:镜像标签
docker pull continuumio/anaconda3:latest
创建容器常用 run 命令1,如:
# docker run [可选参数] 镜像名称:镜像标签 /bin/bash
docker run -it --name="env_p38" -p 8001:8001 -p 6375:22/tcp --privileged -v D:\MyProject:/home:rw --ipc=host --gpus all -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all hadeszsc/my_anaconda3:2022.07.18 /bin/bash
启动或停止容器常用 start 或 stop 命令,如:
# docker start/stop 容器名称
docker start/stop my_container
(启动容器后)进入出容器内部(操作界面)常用 exec 命令2,如:
# docker exec [可选参数] 容器名称(或容器id) /bin/bash
docker exec -it 7ec43d247350b33b4789b8b38afdcd6ce48d5076e13fb071b57e5b9a6d0808dc /bin/bash
从容器生成镜像常用 commit 命令,如:
# docker commit -m="镜像描述" -a="作者" 容器id 仓库名称/镜像名称:镜像标签
docker commit -m="test" -a="author" c63187fa79ab37b432803255eea371aba93f615567369a722d7ddd33aea290da hadeszsc/my_anaconda3:test
将镜像上传的到仓库,常用 push 命令,如:
# docker push 仓库名称/镜像名称:镜像标签
docker push hadeszsc/my_anaconda3:2021.05
Windows系统中,Docker的安装方法,请详见作者文章:Docker入门指南:Docker 安装方法(Win10 家庭版)