Docker 入门与实践:从零开始掌握容器化技术

一、Docker 概述

什么是 Docker?

Docker 是一个开源的应用容器引擎,允许开发者将应用及其依赖打包到一个可移植的镜像中,发布到任何支持 Docker 的 Linux 或 Windows 机器上,实现轻量级虚拟化。容器之间完全隔离,互不干扰。

什么是沙盒机制?

沙盒(Sandbox)是一种安全技术,为运行中的程序提供隔离环境,主要包括:

  • 进程隔离
  • 权限控制
  • 资源隔离
  • 数据隔离

Docker 利用沙盒机制确保每个容器运行在独立的环境中,提升安全性和稳定性。

Docker 容器 vs 虚拟机

特性 Docker 容器 虚拟机
虚拟化层次 应用层 硬件层
启动速度 秒级 分钟级
资源占用
隔离性 进程级 系统级

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=img%2F002.jpg&pos_id=img-ek5TmYK6-17583694035

Docker 架构

Docker 分为三大部分:

  1. Docker 客户端:用户通过命令行或 API 与 Docker 交互。
  2. Docker 主机:执行 Docker 命令的核心引擎。
  3. 远程仓库:存储和分发镜像的平台,如 Docker Hub。

核心概念

  • 镜像(Image):类似于安装包,是容器的基础。
  • 容器(Container):运行中的镜像实例。

二、Docker 环境部署

1. 检查内核版本

uname -r

要求内核版本 ≥ 3.10。

2. 卸载旧版本(可选)

yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

3. 安装依赖与配置源

yum install -y yum-utils
yum-config-manager --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4. 安装指定版本 Docker

yum install --setopt=obsoletes=0 \
    docker-ce-20.10.8-3.el7 \
    docker-ce-cli-20.10.8-3.el7 \
    containerd.io

5. 启动并验证

systemctl start docker
systemctl enable docker
docker run hello-world

若出现网络超时,可配置镜像加速器:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

三、Docker 常用操作

镜像操作

命令 说明
docker images 查看本地镜像
docker search <镜像名> 搜索镜像
docker pull <镜像名:标签> 拉取镜像
docker rmi <镜像ID或名称> 删除镜像

容器操作

命令 说明
docker run -p 主机端口:容器端口 -d --name <名称> <镜像> 创建并运行容器
docker start <容器ID或名称> 启动容器
docker stop <容器ID或名称> 停止容器
docker restart <容器ID或名称> 重启容器
docker ps -a 查看所有容器
docker rm <容器ID或名称> 删除容器
docker exec -it <容器> /bin/bash 进入容器内部
docker logs <容器> -f -n 10 查看日志

示例:运行 Tomcat

docker pull tomcat:8.0
docker run -p 8080:8080 -d --name tomcat8 tomcat:8.0

访问 http://虚拟机IP:8080 即可看到 Tomcat 首页。


四、实战:部署 MySQL 容器

1. 拉取镜像

docker pull mysql:8.4.0-oraclelinux8

2. 创建目录并设置权限

mkdir -p /usr/local/docker/mysql/{logs,conf,data}
chmod 777 /usr/local/docker/mysql/*

3. 运行 MySQL 容器

docker run --name mm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d \
    -v /usr/local/docker/mysql/logs:/var/log/mysql \
    -v /usr/local/docker/mysql/conf:/etc/mysql \
    -v /usr/local/docker/mysql/data:/var/lib/mysql \
    mysql:8.4.0-oraclelinux8

五、自定义镜像:打包 Spring Boot 应用

1. 准备 Dockerfile

FROM openjdk:8
ADD demo-helloworld-0.0.1-SNAPSHOT-exec-99.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

2. 构建镜像

docker build -t demo .

3. 运行容器

docker run -d -p 8888:8888 --name demo01 demo

访问 http://虚拟机IP:8888 即可访问应用。


六、总结

Docker 通过容器化技术实现了应用的快速部署、隔离和迁移,极大地提升了开发与运维效率。本文介绍了 Docker 的基本概念、安装方法、常用命令以及如何自定义镜像,希望能帮助你快速上手 Docker。


如果有需要修改或者补充的地方,可以随时联系主包

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐