1. 什么是Docker,主要解决什么问题

Docker 是一个容器化平台,解决了应用在不同环境中运行不一致、部署复杂、资源占用高等问题,实现“一次构建,到处运行”。


2. 使用阿里源安装Docker

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

通过docker --version查看是否安装成功

额外:配置镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
镜像加速器地址
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker


3. 什么是镜像、什么是容器、什么是仓库

1. 镜像(Image)

  • 定义:镜像是一个静态的、只读的模板,包含了运行某个软件所需的操作系统、代码、库和配置文件等。

  • 作用:用于创建容器。可以理解为“应用程序的安装包”。

  • 示例nginx:latest, python:3.11, library/ubuntu


2. 容器(Container)

  • 定义:容器是镜像的一个运行实例,是一个动态的、可执行的应用环境。

  • 特点:轻量、隔离、可移植,每个容器都有自己的文件系统、网络、进程空间等。

  • 示例:从 nginx:latest 镜像启动的 Web 服务器就是一个容器。


3. 仓库(Registry / Repository)

  • 定义:仓库是用来集中存储和管理镜像的地方。一个仓库可以包含多个版本的镜像(通过标签区分)。

  • 常见仓库

    • 官方仓库:Docker Hub

    • 国内加速器:阿里云、腾讯云、华为云提供的私有仓库


4. docker的默认配置文件在哪里

/etc/docker/daemon.json


5. 如果配置国内可用镜像源

在/etc/docker/daemon.json中写入

{
  "registry-mirrors": ["https://<your_accelerate_address>.mirror.aliyuncs.com"]
}


6. 在下载镜像前为机器做一个快照,随时可以恢复初始状态

在vmware中


7. 如何下载镜像,下载一个nginx的镜像

通过docker pull

docker pull nginx

通过docker images可查看有什么镜像


8. 镜像的tag有什么作用,如果不指定tag,会有默认tag吗

在 Docker 中,Tag 是对某个镜像版本的标识符。它通常用于表示镜像的具体版本或用途。如果在使用 docker pull 或 docker run 时不显式指定 Tag,Docker 会默认使用一个名为 latest 的标签


9. 如何导出本地的镜像并导入其他机器中

要将本地的 Docker 镜像导出并导入到其他机器中,可以使用 docker save 和 docker load 命令。


10. 在讨论Docker时,提到的宿主机是什么含义

宿主机是指运行 Docker 引擎并承载容器的物理机或虚拟机。


11. 容器中运行的进程可以在宿主机中看到吗

容器中运行的进程可以在宿主机中看到。


12. 宿主机可以直接kill掉容器中的进程吗

宿主机可以直接使用 kill 命令终止容器中的进程,因为容器本质上是宿主机上的一个或多个进程。


13. 什么情况下容器会退出

容器会在其主进程退出、被杀、执行完成、资源限制触发或系统异常等情况下退出。可通过 docker logs 和 docker inspect 分析具体原因。


14. 如何查看容器的日志

通过docker log

选项

说明

示例

--tail

显示最后 N 行日志

docker logs --tail 100 my-container

-f

实时跟踪日志输出(类似 tail -f

docker logs -f my-container

--since

显示指定时间之后的日志(支持 5m, 2h, 2025-06-24T10:00:00 等格式)

docker logs --since 5m my-container

--until

显示指定时间之前的内容

docker logs --until 10m my-container


15. Docker有哪些常用命令,分别有什么作用

1. 镜像相关命令

docker images

查看本地所有镜像

docker pull <image>:<tag>

从仓库拉取指定镜像(如 nginx:latest

docker build -t <image>:<tag> .

使用当前目录下的 Dockerfile 构建镜像

docker rmi <image_id><image_name>

删除指定的镜像

docker save -o <filename>.tar <image>:<tag>

将镜像导出为 tar 文件(用于迁移或备份)

docker load -i <filename>.tar

导入 tar 格式的镜像文件

2. 容器相关命令

命令

作用

docker run [OPTIONS] <image>

运行一个新容器(常用参数:-d 后台运行,-p 映射端口,-v 挂载卷)

docker ps

查看正在运行的容器

docker ps -a

查看所有容器(包括已停止的)

docker stop <container>

停止一个正在运行的容器(发送 SIGTERM)

docker kill <container>

强制终止容器进程(发送 SIGKILL)

docker rm <container>

删除一个已停止的容器

docker rm -f <container>

强制删除正在运行的容器

docker start <container>

启动一个已存在的容器

docker restart <container>

重启容器

docker exec -it <container> <command>

在运行中的容器内执行命令(如 bash, sh

docker logs <container>

查看容器的日志输出

3. 系统与信息查看命令

命令

作用

docker info

查看 Docker 系统信息(包括宿主机资源、存储驱动等)

docker version

查看 Docker 客户端和服务器版本信息

docker stats

实时查看容器的 CPU、内存、网络使用情况

docker inspect <container/image>

查看容器或镜像的详细配置信息

docker top <container>

查看容器中运行的进程信息

docker network ls

列出所有网络

docker volume ls

列出所有数据卷

4. 清理与维护命令

命令

作用

docker system prune

清理无用的容器、镜像、网络和构建缓存

docker image prune -a

删除所有未被使用的镜像

docker container prune

删除所有已停止的容器

docker volume prune

删除所有未被使用的数据卷

docker network prune

删除所有未被使用的网络

5. 容器编排相关命令(Compose)

命令

作用

docker-compose up -d

启动服务并后台运行

docker-compose down

停止并删除容器、网络等

docker-compose build

构建 Compose 文件中定义的服务镜像

docker-compose stop

停止正在运行的服务容器

docker-compose restart

重启服务容器

docker-compose ps

查看 Compose 项目中各服务状态

docker-compose logs

查看服务日志


16. 一个服务使用Docker运行跟宿主机上直接运行相比,会产生多少额外损耗

使用 Docker 运行服务的性能损耗非常低,大多数场景下 CPU、内存、IO、网络等开销都在 1%-5% 以内,且可以通过合理配置进一步优化。


17. 使用Nginx镜像启动一个容器

docker run -d --name test-nginx nginx:latest


18. 如何重启、停止、启动、删除容器

# 查看容器状态
docker ps -a | grep my-nginx

# 停止容器
docker stop my-nginx

# 启动容器
docker start my-nginx

# 重启容器
docker restart my-nginx

# 删除容器
docker rm my-nginx

操作

推荐方式

备注

停止容器

docker stop

优先使用,保证优雅退出

强制终止

docker kill

仅在无法正常停止时使用

删除容器

docker rm

若容器运行中需加 -f

重启容器

docker restart

等效于 stop + start


19. 如何进入容器内部,如何从容器中退出到宿主。

使用 docker exec -it 进入容器

docker exec -it <容器名或容器ID> bash

输入exit或者ctrl+d


20. 容器被删除后,容器中的内容还存在吗

如果容器未挂载任何持久化卷,删除容器后其内部的所有修改和数据都会丢失;如果使用了 Volume 或 Bind Mount,则数据仍保留在宿主机上。

以他人的幸福为幸福,以他人的享乐为享乐。