说明

变量使用 {} 包裹,真实环境需要根据实际情况进行修改!

基本概念

容器-Container

简单的说,容器是一个在你机器上运行的沙箱进程(sandboxed process),与主机上其他所有其他进程隔离。这种隔离技术的实现基于Linux内核命名空间与cgroups(自备梯子)open in new window,该技术作为Linux的特色功能已存在了很久。Docker一直致力于普及这些功能。概括的说,一个容器是:

  • 一个可运行的镜像的实例。可以通过Docker API或者CIL创建、开启、关闭、移动或者删除一个容器
  • 可以运行在本地机器、需你机器或者部署到云服务器上
  • 轻便快捷(可以运行在任意操作系统中)
  • 与其他容器相互隔离,运行自己的软件,二进制以及配置

镜像-Image

运行容器时,它使用孤立的文件系统。此自定义文件系统由容器镜像提供。由于镜像包含容器的文件系统,因此它必须包含运行应用程序所需的所有内容——所有依赖项、配置、脚本、二进制文件等。该镜像还包含容器的其他配置,例如环境变量、要运行的默认命令和其他元数据。

Windows推荐安装 WSL

在通过Docker 官网安装指引open in new window安装好 Docker 环境之后,推荐安装WSL(Windows Subsystem for Linux),目前已升级到 WSL2 版本。

WSL2 使用虚拟化技术在轻量级虚拟机 (VM) 中运行 Linux 内核,同时保留了WSL1的操作体验,可以把通过 WSL2 启动的 Linux 系统认为是虚拟机中的一个 Linux 系统,因此,相对于通过用户模式和内核模式组件构成兼容性底层来运行Linux的WSL1来说,WSL2 的 Linux 系统更完整,功能更完善。例如,WSL1 不支持 Docker,而 WSL2 可以以原生的方式运行 Docker。

WSL2 的安装可参考:使用 WSL 在 Windows 上安装 Linuxopen in new window。安装完成后在 Docker Desktop 中开启 WSL2选项: docker 开启wsl2

帮助启动类命令

查看docker服务状态

systemctl status docker

启动

systemctl start docker

停止

systemctl stop docker

重启

systemctl restart docker

状态查看

systemctl status docker

版本信息查看

docker -v
docker version
docker info

帮助信息查看

docker --help
docker {keyword} --help

镜像命令

列出镜像列表

docker images [OPTIONS] [ARGS]

注意

  • [OPTIONS]: 可以通过docker images --help查看帮助
  • -a: -all的简写,即列出所有本地所有镜像
  • -q: 只显示镜像id
  • [ARGS]: 可以直接写镜像名,比如centosnginx

在远程仓库中搜索某个镜像

docker search [OPTIONS] {image name}

注意

  • [OPTIONS]: 可以通过docker search --help查看帮助
  • --limit int: 只列出int个镜像,默认为25
docker search --limit 3 nginx

从远程仓库下载某个镜像

docker pull {image name}[:TAG]

注意

  • 不写TAG默认就是最新版:latest

查看镜像详细信息

docker inspect {image name}

查看镜像/容器/数据卷所占的空间

docker system df

删除镜像

docker rmi -f {image id}
docker rmi -f {image name}:{tag name} {image name}:{tag name}
docker rmi -f $(docker images -qa)

拉取镜像

docker pull {image name}

容器命令

创建+启动

docker run [OPTIONS] {image name} [COMMAND] [ARG...]
docker run -d -p 80:80 -p 443:443 --name=default_site -v /home/default/page:/etc/nginx/html -v /home/default/nginx/conf.d:/etc/nginx/conf.d nginx

注意

  • [OPTIONS]: 大部分是一个-(例如-p-v),个别会是是两个-(例如--name=)
  • --name=: 容器名称(不可与已存在容器同名),不指定该参数则会随机生成
  • -d: --detach的简写,后台运行容器并返回容器id,即启动守护式容器
  • -i: --interactive的简写,以交互模式运行容器,通常搭配-t使用
  • -t: --tty的简写,为容器重新分配一个伪输入终端,通常搭配-i使用,即启动交互式容器(前台有伪终端,等待交互)
  • -p: 指定端口映射,:分隔(分隔符左边为宿主机端口,右边为容器端口)
  • -v: --volume的简写,表示为容器指定一个外部的卷,:分隔(分隔符左边为宿主机磁盘目录,右边为容器内部目录)

启动容器

docker run -it {image name} /bin/bash
docker run -d {image name}

列出所有正在运行的容器

docker ps [OPTIONS]

注意

  • -a: 列出当前所有正在运行的容器+历史上运行过的容器
  • -l: 显示最近创建的容器
  • -n: 显示最近创建的n个容器
  • -q: 静默模式,只显示容器编号

退出容器

启动已停止运行的容器

docker start {container id or container name}

重启容器

docker restart {container id or container name}

停止容器

docker stop {container id or container name}

强制停止容器

docker kill {container id or container name}

删除容器

docker rm {container id}

注意

  • 删除之前先停止容器

强制删除容器

docker rm -f {container id}

注意

  • 容器运行时可以直接删除

进入容器后台

docker exec -it -u {username} {container id}

设置容器开机自启动

docker run {image name} [OPTIONS] --restart=always
docker update --restart=always {container id or container name}
最近修改时间: