首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >最全面版本--教你Docker快速入门

最全面版本--教你Docker快速入门

原创
作者头像
china马斯克
修改2025-12-10 12:00:37
修改2025-12-10 12:00:37
4541
举报
文章被收录于专栏:网络技术网络技术日常活动篇

一、Docker的简介和安装

先问Docker 是什么?

Docker 是一个应用打包、分发、部署的工具。你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,而普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件。

Docker通常用来做什么?

  • 应用分发、部署,方便传播给他人安装。特别是开源软件和提供私有部署的应用
  • 快速安装测试/学习软件,用完就丢(类似小程序),不把时间浪费在安装软件上。例如 Redis / MongoDB / ElasticSearch / ELK
  • 多个版本软件共存,不污染系统,例如 Python2、Python3,Redis4.0,Redis5.0
  • Windows 上体验/学习各种 Linux 系统

与虚拟机的对比

功能

普通虚拟机

Docker

跨平台

通常只能在桌面级系统运行,例如 Windows/Mac,无法在不带图形界面的服务器上运行

支持的系统非常多,各类 windows 和 Linux 都支持

自动化

需要手动安装所有东西

一个命令就可以自动部署好所需环境

稳定性

稳定性一般,不同系统差异大

稳定性较好,不同系统都一样部署方式

性能

性能损耗大,内存占用高,因为是把整个完整系统都虚拟出来了

性能好,只虚拟软件所需运行环境,最大化减少没用的配置

几个概念理解

再来看几个概念理解

打包:就是把你软件运行所需的依赖、第三方库、软件打包到一起,变成一个安装包

分发:你可以把你打包好的“安装包”上传到一个镜像仓库,其他人可以非常方便的获取和安装

部署:拿着“安装包”就可以一个命令运行起来你的应用,自动模拟出一摸一样的运行环境,不管是在 Windows/Mac/Linux。

镜像:可以理解为软件安装包,可以方便的进行传播和安装。

容器:软件安装后的状态,每个软件运行环境都是独立的、隔离的,称之为容器。

安装

官网下载地址:https://dockerdocs.cn/get-docker/index.html

Linux 系统(以 CentOS 为例)

  1. 卸载旧版本(若有):yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  2. 安装依赖包:yum install -y yum-utils device-mapper-persistent-data lvm2
  3. 配置 Docker 软件源:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  4. 安装 Docker 引擎:yum install docker-ce docker-ce-cli containerd.io
  5. 启动 Docker 并设置开机自启:systemctl start docker && systemctl enable docker
  6. 验证安装:docker --version,输出版本信息即表示安装成功。

Windows 系统(Windows 10 专业版 / 企业版)

  1. 启用 “Hyper-V” 和 “容器” 功能:控制面板 → 程序 → 启用或关闭 Windows 功能,勾选对应选项后重启电脑。
  2. 从 Docker 官网下载 Windows 版本安装包,双击运行并默认安装。
  3. 安装完成后启动 Docker,右下角出现 Docker 图标即表示服务启动成功。
  4. 验证安装:打开命令提示符(CMD),输入 docker --version,输出版本信息即可。

安装完成后,启动Docker服务:

1.在Linux上,可以使用以下命令启动Docker服务:

代码语言:txt
复制
sudo service docker start

2.在Windows或macOS上,可以在Docker桌面应用程序中启动Docker服务。

创建和运行容器

安装完成后,您可以使用Docker命令行界面(CLI)来创建和运行容器。以下是创建和运行容器的步骤:

1.查找可用的镜像。您可以使用以下命令查找可用的镜像:

代码语言:txt
复制
docker search <镜像名称>

2.拉取镜像。您可以使用以下命令从Docker Hub或第三方镜像仓库拉取所需的镜像:

代码语言:txt
复制
docker pull <镜像名称>

3.运行容器。您可以使用以下命令运行一个容器:

代码语言:txt
复制
docker run -d <镜像名称> <命令>

其中,-d选项表示在后台运行容器,<镜像名称>是您要使用的镜像名称,<命令>是容器启动时要执行的命令。例如,要运行一个基于Ubuntu的容器并执行echo命令,可以运行以下命令:

代码语言:txt
复制
docker run -d ubuntu echo "Hello, world!"

查看正在运行的容器。您可以使用以下命令查看正在运行的容器列表:

代码语言:txt
复制
docker ps

进入容器的终端。您可以使用以下命令进入容器的终端:

代码语言:txt
复制
docker exec -it <容器ID> /bin/bash

其中,<容器ID>是容器的唯一标识符。进入终端后,您可以在容器内执行命令。例如,要在容器内执行ls命令,可以运行以下命令:

代码语言:txt
复制
docker exec -it <容器ID> ls

常见报错

wsl相关的报错:

解决方式:

1.控制面板->程序->启用或关闭 windows 功能,开启 Windows 虚拟化和 Linux 子系统(WSL2)

2.命令行安装 Linux 内核:

代码语言:txt
复制
wsl.exe --install -d Ubuntu

3.设置开机启动 Hypervisor

代码语言:txt
复制
bcdedit /set hypervisorlaunchtype auto

二、Docker安装软件

Docker 安装的优点

对比维度

直接安装的缺点

Docker 安装的优点

安装便捷性

安装麻烦,需处理各类依赖,易出现运行报错(如 WordPress、ELK 等)

一个命令即可完成安装,快速便捷

镜像资源

需自行寻找官方安装包,资源获取繁琐

拥有大量现成镜像,可直接拉取使用

系统兼容性

对 Windows 不友好,部分 Linux 专享软件无法运行

无系统兼容问题,Linux 专属软件可正常运行

多版本共存

不支持多版本软件共存,易产生环境冲突

支持软件多版本独立部署,互不干扰

系统性能影响

安装软件过多,占用系统资源,拖慢电脑速度

容器化隔离,用完可随时删除,不影响系统性能

跨平台一致性

不同系统 / 硬件的安装方式差异大,部署繁琐

只需安装 Docker,跨平台统一部署命令,适配所有环境

如何安装软件?

这里我以安装redis为例:

进入 docekr官方镜像仓库查找 Redis

要访问 Docker Hub,可以直接在浏览器中访问 https://hub.docker.com/

查找 Redis

代码语言:txt
复制
docker search Redis

拉取 Redis 镜像

代码语言:txt
复制
docker pull Redis

使用命令运行:

代码语言:txt
复制
docker run -d -p 6379:6379 --name redis redis:latest

到这里就可以成功运行了

其他相关命令参考

给大家一些相关命令可以参考

  1. docker ps 查看当前运行中的容器
  2. docker images 查看镜像列表
  3. docker rm container-id 删除指定 id 的容器
  4. docker rmi image-id 删除指定 id 的镜像
  5. docker volume ls 查看 volume 列表
  6. docker network ls 查看网络列表
  7. docker stop/start container-id 停止/启动指定 id 的容器

三、创建自己的镜像

1.创建自己的目录

新建专属目录存放 Dockerfile 和所需文件,避免文件混乱

代码语言:txt
复制
mkdir -p /my-docker/nginx-custom && cd /my-docker/nginx-custom

2.编写 Dockerfile

Dockerfile 是镜像构建的 “说明书”,定义基础镜像、操作指令、启动命令等,在构建目录下创建Dockerfile文件:

代码语言:txt
复制
# 1. 指定基础镜像(必填,推荐官方镜像)
FROM nginx:alpine  # 轻量级Alpine版本的Nginx,减少镜像体积

# 2. 维护者信息(可选)
MAINTAINER dev@example.com

# 3. 执行镜像内操作:复制自定义文件到容器指定目录
COPY index.html /usr/share/nginx/html/  # 替换Nginx默认首页

# 4. 暴露端口(可选,仅声明,不实际映射)
EXPOSE 80

# 5. 启动容器时执行的命令(可选,若基础镜像已有可省略)
CMD ["nginx", "-g", "daemon off;"]

参考文档:Dockerfile参考文档

部分指令说明

指令

作用

FROM

指定基础镜像(如 Ubuntu、CentOS、Nginx 等),所有镜像必须基于基础镜像构建

COPY/ADD

将宿主机文件复制到镜像内(ADD 支持自动解压压缩包)

RUN

构建镜像时执行的命令(如安装软件、创建目录,多行用 && 拼接减少分层)

WORKDIR

指定后续指令的工作目录,避免使用 cd 命令

ENV

设置环境变量(如 ENV PATH /usr/local/bin:$PATH)

EXPOSE

声明容器运行时暴露的端口(仅文档作用,运行时需用 -p 映射)

CMD/ENTRYPOINT

容器启动时执行的命令(CMD 可被运行命令覆盖,ENTRYPOINT 不可覆盖)

3.构建 Docker 镜像

使用docker build命令,基于 Dockerfile 构建镜像,格式如下:

代码语言:txt
复制
docker build -t [镜像名称]:[标签] [Dockerfile所在目录]

比如:

代码语言:txt
复制
docker build -t mytest:v1 .

终端会逐行执行 Dockerfile 指令,输出每一步的构建日志,最后显示Successfully built [镜像ID]则构建成功。

我们可以通过docker images查看已构建的镜像

4.测试运行 Docker 镜像

运行我们上面的mytest

代码语言:txt
复制
docker run -p 8080:8080 --name test-hello mytest:v1

-p 映射容器内端口到宿主机 --name 容器名字 -d 后台运行

如果没有问题,我们也可以将镜像推送到仓库

代码语言:txt
复制
docker push yourusername/mytest:v1

当然你得先登录到你的Docker 仓库。

四、进行目录挂载

很多人在使用的时候通常会遇到这样的问题:

比如:使用 Docker 运行后,我们改了项目代码不会立刻生效,需要重新build和run;容器里面产生的数据,例如 错误打印,log日志文件,数据库备份文件,容器删除后就丢失了等等。

那么我们就可以对目录进行挂载来解决这些问题。

常用挂载方式

  1. bind mount 直接把宿主机目录映射到容器内,适合挂代码目录和配置文件。可挂到多个容器上
  2. volume 由容器创建和管理,创建在宿主机,所以删除容器不会丢失,官方推荐,更高效,Linux 文件系统,适合存储数据库数据。可挂到多个容器上
  3. tmpfs mount 适合存储临时文件,存宿主机内存中。不可多容器共享。

比如我下面这样写:

代码语言:txt
复制
docker run -p 8080:8080 --name test-hello -v E:/code:/app -d mytest:v1

五、发布和部署

首先Docker官方提供了一个 镜像库,里面包含了大量镜像,基本各种软件所需依赖都有,要什么直接上去搜索。那么我们也可以把自己 build 出来的镜像上传到 docker 提供的镜像库中,方便我们传播和使用。

首先我们注册一个账号:

这里就不详细说了,大家自行注册就好。

注册完毕后然后

命令行登录账号:

代码语言:txt
复制
docker login -u username

新建一个tag,注意这里的名字必须跟你注册账号一样

代码语言:txt
复制
 docker tag mytest:v1 username/mytest:v1

推送我们的镜像:

代码语言:txt
复制
docker push username/mytest:v1

进行部署

代码语言:txt
复制
 docker run -dp 8080:8080 username/mytest:v1

六、Docker Compose管理多容器应用

当我们的应用需要多个服务(如 Web 服务 + 数据库)时,Docker Compose 可通过配置文件一键启动所有服务,避免手动逐个启动容器。

我们来看下具体怎么做:

1.安装 Docker Compose(Linux 系统):

curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose,并添加执行权限:chmod +x /usr/local/bin/docker-compose

2.编写 docker-compose.yml 文件:

代码语言:txt
复制
version: '3'
services:
  web:
    image: myflaskapp:v1.0
    ports:
      - "5000:5000"
    depends_on:
      - db  # 依赖数据库服务
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: flaskdb
    ports:
      - "3306:3306"
    volumes:
      - mysql-data:/var/lib/mysql  # 数据持久化
volumes:
  mysql-data:  # 定义数据卷

3.启动所有服务:

docker-compose up -d(在 docker-compose.yml 所在目录执行)

4.停止所有服务:

docker-compose down(如需保留数据,添加 -v 参数可删除数据卷)

七、Docker 进阶技巧

镜像优化:减小体积 + 提升构建速度

  1. 采用多阶段构建:仅在构建阶段安装依赖,最终镜像只保留运行所需文件,大幅减小体积。
  2. 使用轻量级基础镜像:如 alpine 版本(体积仅几 MB),替代完整版操作系统镜像。
  3. 合理排序 Dockerfile 指令:将频繁变动的文件(如应用代码)放在最后,利用镜像缓存提升构建速度。

数据持久化:避免容器删除导致数据丢失

容器默认的存储是临时的,容器删除后数据会丢失,常用的持久化方案有两种:

  1. 数据卷(Volumes):Docker 管理的宿主机文件系统,生命周期独立于容器,是推荐方案。
  2. 绑定挂载(Bind Mounts):直接挂载宿主机的任意目录到容器,灵活性高,但需手动管理目录权限。

网络配置:实现容器间通信

Docker 默认提供三种网络模式:

  1. 桥接模式(bridge):默认模式,容器通过 Docker 网桥与宿主机通信,容器间可通过容器名或 IP 访问。
  2. 主机模式(host):容器直接使用宿主机的网络,无端口映射开销,但网络隔离性差。
  3. 自定义网络:通过 docker network create 创建自定义网络,容器加入后可通过容器名直接通信,稳定性更高。

Docker常见问题排查

  1. 容器启动失败:通过 docker logs 容器ID 查看日志,大概率是端口占用、配置错误或依赖缺失。
  2. 镜像拉取缓慢:配置国内镜像加速器,或使用私有仓库。
  3. 容器间无法通信:检查是否在同一网络,自定义网络需确保容器已加入该网络。
  4. 数据丢失:确认是否使用了数据卷或绑定挂载,避免直接依赖容器内临时存储。

最后绘制一份思维导图,帮助大家进行理解

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Docker的简介和安装
    • 先问Docker 是什么?
    • Docker通常用来做什么?
    • 与虚拟机的对比
    • 几个概念理解
    • 安装
      • Linux 系统(以 CentOS 为例)
      • Windows 系统(Windows 10 专业版 / 企业版)
    • 创建和运行容器
    • 常见报错
      • wsl相关的报错:
  • 二、Docker安装软件
    • Docker 安装的优点
    • 如何安装软件?
    • 其他相关命令参考
  • 三、创建自己的镜像
    • 1.创建自己的目录
    • 2.编写 Dockerfile
    • 3.构建 Docker 镜像
    • 4.测试运行 Docker 镜像
  • 四、进行目录挂载
    • 常用挂载方式
  • 五、发布和部署
  • 六、Docker Compose管理多容器应用
    • 1.安装 Docker Compose(Linux 系统):
    • 2.编写 docker-compose.yml 文件:
    • 3.启动所有服务:
    • 4.停止所有服务:
  • 七、Docker 进阶技巧
    • 镜像优化:减小体积 + 提升构建速度
    • 数据持久化:避免容器删除导致数据丢失
    • 网络配置:实现容器间通信
    • Docker常见问题排查
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档