一、Docker核心概念与价值

Docker是一种轻量级的容器化技术,它通过三大核心组件实现应用与环境的隔离打包:

  • ​镜像(Image)​​:只读模板,包含运行容器所需的所有文件和配置

  • ​容器(Container)​​:镜像的运行实例,可以在其中运行应用程序

  • ​Dockerfile​:自动化构建镜像的脚本文件

Docker的主要优势体现在三个方面:​轻量级​(共享主机内核,资源消耗低)、可移植性​(跨平台运行)和一致性​(环境无差异)

。与传统虚拟机相比,Docker容器不需要额外的操作系统层,因此启动速度更快,资源利用率更高。

二、安装与验证Docker环境

安装Docker是第一步,以下是不同操作系统下的安装方法:

​Linux系统(如Ubuntu)安装命令:​​

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker

​Windows/macOS​:直接下载Docker Desktop并安装。

​验证安装是否成功:​​

docker run hello-world

如果屏幕显示"Hello from Docker!",说明Docker已正确安装并可以正常工作

。

三、Docker基础操作命令

掌握以下核心命令是使用Docker的基础:

1. 镜像管理

docker pull nginx        # 拉取镜像
docker images            # 查看本地镜像
docker rmi 镜像名称:标签   # 删除镜像

2. 容器操作

docker run -d -p 8080:80 --name my_container nginx  # 运行容器
docker ps                 # 查看运行中的容器
docker stop <容器ID>       # 停止容器
docker rm <容器名>         # 删除容器
docker exec -it my_container /bin/bash  # 进入容器

-d参数表示后台运行,-p指定端口映射(主机端口:容器端口),--name为容器命名。

四、实战案例:从简单到复杂

案例1:部署Nginx Web服务器

docker pull nginx
docker run -d -p 8080:80 --name webserver nginx

访问 http://localhost:8080即可看到Nginx默认页面。

案例2:部署MySQL数据库

docker pull mysql:5.7
docker run -d -p 3306:3306 --name mydb -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

使用数据库客户端连接localhost:3306即可访问。

案例3:构建自定义Python应用镜像

创建Dockerfile文件:

dockerfile

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]

构建并运行镜像:

docker build -t my-python-app .
docker run -d -p 3000:3000 my-python-app

五、数据持久化与网络配置

数据持久化

默认情况下,容器删除后数据也会丢失。使用数据卷可实现数据持久化:

docker run -d -v mydata:/var/lib/mysql mysql:5.7

这样即使删除容器,数据也会保存在mydata卷中。

网络配置

创建自定义网络实现容器间通信:

docker network create -d bridge my_network
docker run --network=my_network redis

六、进阶工具:Docker Compose多容器编排

当应用需要多个服务(如Web服务+数据库)时,Docker Compose可一键启动整个环境。创建docker-compose.yml文件:

version: '3'
services:
  web:
    image: nginx
    ports: ["80:80"]
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: 123456

运行命令:

docker-compose up -d

Logo

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

更多推荐