十分钟Docker零基础实战指南
面向零基础快速实现Docker入门,涵盖了Docker的所有常用功能与命令。
核心概念
Docker容器是一种容器化技术。
容器化技术和虚拟机技术有些类似,但是本质是不同的。图1 显示了容器和虚拟机的区别,每个容器化均不包含操作系统,共用一个操作系统内核;每个虚拟机则包含完整的独立操作系统内核,和主机的操作系统内核是独立的。
安装
Linux和Win的安装略有不同。
Win
win上直接前往官网安装Docker Desktop进行管理即可。
Linux
Linux安装参考教程,注意千万不要安装Docker Desktop,会因为权限问题,产生两个不同的Docker。
下载镜像
镜像是容器的模板,可以根据一个制作好的镜像配置无数个类似的模板,其关系和Ubuntu系统镜像与Ubuntu系统的关系类似。
docker pull
命令用于从 Docker 注册表(例如 Docker Hub)中拉取(下载)镜像到本地。
1 | docker pull [OPTIONS] NAME[:TAG|@DIGEST] |
下面对NAME
属性的结构进行解释:
- docker.io表示仓库地址,当处于内陆时,可以使用镜像源替代;
- library 表示命名空间,一般是作者的名字;
- ubuntu 镜像的名字
可以在docker hub进行镜像的查找和选取,当然内陆可以使用fxxk docker等第三方镜像网站替代。
配置镜像站
如果不对NAME
属性的仓库地址进行单独配置,内陆需要配置镜像站以解决网络问题。
Linux
打开配置文件:
1 | sudo vi /etc/docker/daemon.json |
在/etc/docker/daemon.json
中填入以下内容:
1 | { |
重启Docker:
1 | sudo service docker restart |
Win
打开Setting->Docker Engine,在输入框中添加:
1 | { |
其他命令
- 查看
sudo docker images
- 删除
docker rmi [OPTIONS] IMAGE [IMAGE...]
创建容器
创建容器使用docker run
命令实现。
1 | docker run [OPTIONS] IMAGE [COMMAND] [ARG...] |
重点解释
-v
该参数有两种模式,一种是绑定挂载,一种是命名卷挂载。
绑定挂载格式:-v 宿主机目录:容器内目录
命名卷挂载则需要先创建一个存储空间,即命名卷,然后使用-v 卷的名字:容器内目录
进行挂载。
其他命令
查看容器可以使用docker ps
命令实现,添加-a
参数可以显示未运行的容器。
删除容器和删除镜像类似,可以使用docker rm [OPTIONS] CONTAINER [CONTAINER...]
删除停止运行了的容器,添加-f
命令则可以强制删除正在运行的容器。
运行容器使用docker start [CONTAINER...]
。
停止容器使用docker stop [CONTAINER...]
。
其余参数需要详细阅读镜像文档中可以传递的环境变量。
挂载卷
常见卷命令如下:
1 | docker volume ls: 列出所有卷。 |
调试容器
使用docker logs
用于获取和查看容器的日志输出。
1 | docker logs [OPTIONS] CONTAINER |
使用docker port
用于显示容器的端口映射信息,即容器内部的端口如何映射到宿主机的端口。
1 | docker port CONTAINER [PRIVATE_PORT[/PROTO]] |
使用docker stats
用于实时显示 Docker 容器的资源使用情况,包括 CPU、内存、网络 I/O 和块 I/O。
1 | docker stats [OPTIONS] [CONTAINER...] |
使用docker exec
用于在运行中的容器内执行一个新的命令。这对于调试、运行附加的进程或在容器内部进行管理操作非常有用。
1 | docker exec [OPTIONS] CONTAINER COMMAND [ARG...] |
构建镜像
通过Dockerfile进行构建镜像。
详细教程可以参考Docker Dockerfile。
详细操作实战可参见dockerfile实战指南
Docker网络
默认桥接
如图2所示,默认是桥接网络,容器均连接到这个网络,各自分配了一个IP地址。容器内部可以通过IP地址互相访问,但是与宿主机的网络是隔断的。
子网桥接
如图3所示,可以使用docker network create <network>
命令创建子网,让不同容器加入不同子网。不同子网之间的网络是隔断的,相同子网内部的容器可以通过IP或者名字相互访问。
Host模式
Host模式则可以实现容器与主机共享网络,直接使用主机的IP地址,无需-p进行端口映射。
None模式
该模式即不连接网络。
其他命令
1 | docker network ls: 列出所有网络。 |
Docker Compose
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
详细教程可以参考Docker Compose,基本和docker命令是一一对应的。
其常见命令如下:
1 | docker compose run - 启动一个新容器并运行一个特定的应用程序。 |