Docker官网地址:https://www.docker.com/products/docker-desktop
一、Docker介绍
Docker是什么?借用下Docker中文社区介绍。
使用Docker,首先需要对镜像、容器、仓库三个概念有所理解。
- 镜像
Docker镜像,可以认为是一个只读的模板文件,可以通过该文件创建一个Docker容器。镜像可以从Docker仓库下载,也可以由他人生成。当然也可以生成一个Docker镜像给所需者使用。Docker提供了一个简单的机制用来创建镜像和更新现有镜像。 - 容器
Docker镜像是一个模板文件,而容器是根据镜像创建的实际使用的一个实例(环境)。创建的容器可以被启动、运行、停止,每个容器间相互隔离,互不影响。如使用ubuntu镜像,可以创建一个具有ubuntu环境的容器,可以认为是一个简易版的ubuntu环境。镜像数据是只读的,但容器数据可以认为是可读可写的。
镜像和容器,也可以类比为类和对象的关系。 - 仓库
仓库是集中存放Docker镜像的空间。在仓库中的每个镜像有着自己唯一tag,用于标识镜像。目前,最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。Docker官方网站专门有一个页面来存储所有可用的镜像,网址是:https://hub.docker.com/。
Docker仓库与Github仓库类似,只是Docker仓库存放的是Docker镜像,而Github仓库存放的是程序源码。
二、下载安装
Windows平台上,只有Win10支持Docker的安装。下载地址:https://www.docker.com/products/docker-desktop。
下载完成后,按提示安装完成。现安装路径不可修改默认安装在系统盘。在Win10安装Docker时,需要依赖Hyper-v或WSL2,因此需要开启Hyper-v功能,开启方法可以参考官方介绍。在Win10新的版本,支持WSL2,Docker可以使用WSL2环境进行运行(所以在Win10上可以认为Docker可以有两种运行方式:依赖Hpyer-v或使用WSL2。)。在Docker Desktop的Settings界面下可以通过是否勾选”Use the WSL2 based engine“进行选择。
使用WSL2 based engine时,选择在以下界面选择要使用的WSL实例环境。
通过Docker Desktop也可以查看管理当前Docker中的镜像和容器信息。
对于当前系统WSL的版本,可以使用wsl相关命令查看。
PS C:\> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Stopped 2
docker-desktop-data Stopped 2
PS C:\>
其中Ubuntu-20.04为安装Win10 Linux子系统。
三、镜像下载
在Docker环境下,我们可以使用官方镜像或者第三方镜像用于开发环境的搭建及应用部署,常用命令如下。
# 查看所有当前所有镜像
docker images
# 从仓库拉取指定镜像
docker pull [IMAGE_NAME]:[TAG] # TAG为可选
四、容器使用
在镜像安装之后,就可以使用该镜像创建相应的容器启动使用。创建一个容器可以使用docker run命令,命令格式如下:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
使用帮助可以使用“docker run --help”查看。[OPTIONS]常用参数如下:
- -i, -t
-i表示保持STDIN打开,-t表示分配一个伪 TTY。通常以-it的方式结合使用,表示创建一个新的终端用于交互。 - -d
打印容器的ID,并在后台运行该容器。 - –name
docker run创建一个容器时,除容器唯一ID外,还会为容器随机分配一个名字。–name可以为容器指定一个特定的名字,便于对该容器进行管理使用。 - -v
绑定一个挂载卷,用于宿主机和当前容器的文件共享。格式为:宿主机目录:容器目录,需要使用绝对路径。
对于Win平台,盘符后的“:”应该使用“/”进行代替。如“E/Docker”。 - -p
指定端口映射,格式为:宿主机端口:容器端口
# 启动一个容器示例命令(Windows平台)
docker run -it --name test -v E/Dockr:/share ubuntu /bin/bash
对于Docker容器操作,其他常用命令如下:
# 查看所有容器
docker ps -a
# 删除容器
docker rm 容器ID/NAME
# 杀死一个运行中的容器
docker kill -s KILL 容器ID/NAME
# 启动容器
docker start 容器ID/NAME
# 重启容器
docker restart 容器ID/NAME
# 停止容器
docker stop 容器ID/NAME
# 连接(进入)一个运行中的容器
docker attach 容器ID/NAME
# 宿主机与容器文件cp
docker cp 宿主机目录 容器ID/NAME:容器目录
# 在宿主机执行容器中的命令
docker exec 容器ID/NAME <待执行命名>
五、其他命令
# 查看帮助
docker --help