Docker 快速入手:从原理到实践的高效指南

一、Docker 诞生背景与核心优势

传统物理机部署面临成本高、资源浪费、迁移困难等问题,虚拟机虽能部分解决,但完整操作系统的资源消耗仍显著。Docker 基于 Linux 内核技术(Cgroups、Namespace、Union FS)实现操作系统级虚拟化,仅封装应用及其依赖,轻量高效。举个通俗的例子,就好比Andy我有台电脑,为了编程要部署成千上万的IDE,又是环境又是依赖,可能还有更多麻烦,咋办呢?Docker一键镜像源下载部署在虚拟空间内,然后随时随地一键打包+运行。

核心优势:

  • 轻量灵活:镜像体积仅 MB 级,单机支持上千容器,启动速度秒级(对比虚拟机分钟级)。
  • 环境一致:通过镜像固化运行环境,开发、测试、生产环境无缝迁移。
  • 资源高效:共享宿主机内核,硬件资源利用率提升 5-10 倍。
  • 持续交付:通过 Dockerfile 定义构建流程,支持自动化部署。

二、快速安装与配置(以 CentOS 为例)

1. 环境初始化

# 配置阿里云yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache

# 关闭防火墙与SELINUX
systemctl disable --now firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
iptables -F && iptables -X

2. 安装 Docker CE

# 添加Docker官方源
curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装最新稳定版
yum install -y docker-ce

# 启动服务并设置开机自启
systemctl enable --now docker

3. 配置镜像加速器

mkdir -p /etc/docker
vim /etc/docker/daemon.json  # 添加以下内容
{
  "registry-mirrors": ["https://8xpk5wnt.mirror.aliyuncs.com"]
}
systemctl daemon-reload && systemctl restart docker

三、核心概念:镜像、容器、仓库

1. 镜像(Image)

  • 分层存储:基于 UnionFS,多层只读叠加,共享基础层(如 CentOS 镜像层可被多个应用镜像复用)。
  • 构建方式
    • 直接拉取:docker pull nginx:latest
    • 自定义构建:通过 Dockerfile 定义流程(下文详述)。

2. 容器(Container)

示例:构建自定义 Nginx 镜像

  • 运行实例:镜像的可写运行层,支持生命周期管理(启动、停止、删除)。
  • 核心命令
    docker run -d -p 80:80 --name my-nginx nginx  # 后台运行Nginx,映射宿主机80端口
    docker ps  # 查看运行中容器
    docker exec -it my-nginx bash  # 进入容器终端
    docker stop my-nginx  # 停止容器

    3. 仓库(Registry)

  • 公共仓库:Docker Hub(默认)、阿里云镜像仓库。
  • 私有仓库:通过docker-registry容器搭建,支持镜像推拉:
    docker pull registry.example.com/my-app:v1  # 拉取私有镜像
    docker push registry.example.com/my-app:v1  # 推送镜像至私有仓库

    四、Dockerfile 实践:自定义镜像

    为什么需要 Dockerfile?

  • 标准化构建:用脚本定义镜像生成流程,避免手动配置的黑箱操作。
  • 可维护性:版本化管理,团队协作更高效。
    #示例:构建自定义 Nginx 镜像
    # Dockerfile
    FROM nginx:alpine  # 基础镜像
    MAINTAINER your-name   # 维护者信息
    
    RUN sed -i 's/daemon off;/daemon on;/' /etc/nginx/nginx.conf  # 修改配置
    COPY index.html /usr/share/nginx/html/  # 复制静态文件
    EXPOSE 80  # 声明端口
    CMD ["nginx", "-g", "daemon on;"]  # 容器启动命令
    #构建与运行:
    docker build -t my-nginx:v1 .  # 构建镜像(.表示当前目录)
    docker run -d -p 8080:80 my-nginx:v1  # 运行自定义镜像

    五、高效操作技巧

    1. 镜像管理

  • 查看镜像docker images
  • 删除镜像docker rmi
  • 导出 / 导入
    docker save -o my-image.tar my-nginx:v1  # 导出镜像
    docker load -i my-image.tar  # 导入镜像

    2. 容器管理

  • 查看所有容器docker ps -a
  • 强制删除容器docker rm -f
  • 查看日志docker logs -f

      3. 数据持久化

  • 卷挂载docker run -v /host/path:/container/path my-nginx
  • 环境变量docker run -e "APP_ENV=prod" my-app

六、总结

Docker 通过轻量级虚拟化、环境固化、自动化部署三大核心能力,彻底改变了应用交付模式。快速上手的关键在于掌握:

  • 基础架构:镜像分层、容器生命周期。
  • 核心工具:Docker CLI、Dockerfile。
  • 最佳实践:数据卷管理、镜像优化(减少层数、使用轻量基础镜像)。

    •  

PS:官网下载 docker 后显示 stopped,大概率是因为 wsl 没更新,用终端(管理员身份)输入 wsl --update,之后再 restart 你的 docker 就行了(如果你安装程序只是下一步下一步,大概率你连wsl 和 ubuntu 也没有下,把这俩下载好相互适配的版本,然后再进行我说的那步,包括你再去资源管理器里面自己开启一下,可能没用)。

你可能感兴趣的:(docker,容器,运维)