一 为什么用Docker

传统部署软件环境不一致

部署太慢

虚拟机太笨重,资源浪费

迁移复制超级麻烦

docker的优势:

环境统一:打包带越,在哪运行都一样
部署极速:几分钟部署一套完整环境
轻量高效:比虚拟机小几十倍,秒级启动
迁移方便:打包好的盒子,直接复制到任何服务器

二 什么是Docker

简单来讲,docker就是容器化打包技术。它可以把我们的软件、运行需要的系统环境、所有依赖、配置文件,全部打包成一个独立的小盒子。这个盒子,放到任何一台服务器,不用安装、不用配置,打开直接就能运行。在哪运行都一样,秒级启动,占用资源极少。


Docker=软件环境一键打包


三 docker核心概念

1 镜像(Image)

镜像(Image),这是Docker的“基础模板”。
它是一个只读的模板文件,里面包含了我们运行软件所需要的一切:操作系统、软件本身、依赖包、配置文件,所有东西都打包好,一次性做好,不能修改。
例如:我们需要部署MySQL,就下载一个“MySQL镜像”,这个镜像就是做好的“模板”,直接拿来用就行,是Docker运行的基础。
核心特点
只读:不能修改,一旦做好,就固定不变;
可复制:一个镜像,可以复制出无数个可以运行的“实例”;
体积小:比虚拟机镜像小很多,下载速度快。


镜像=软件环境的“模板”


2 容器(Container)


它是镜像运行起来的“实例”,也是我们真正使用的“外卖便当”。基于镜像启动的、可运行的实例—我们下载好镜像(模板)后,通过一条命令,就能把镜像“启动”起来,启动后就变成了容器,容器是可以运行、可以操作、可以停止的,相当于“活的”软件。
以Mysql为例:下载Mysql镜像(模板),启动镜像后,就得到了一个Mysql容器,这个容器,就
是正在运行的Mysql服务,我们可以访问它、停止它、重启它。
核心特点
可运行:容器是“活的”,可以启动、停止、重启、删除;
可修改:容器运行后,里面的内容可以修改(比如在容器里创建文件);
相互隔离:多个容器之间相互独立,互不影响;
依赖镜像:没有镜像,就不能创建容器,容器是镜像的“分身”。

容器=运行的镜像=活的模板


3 仓库(Registry)


它存放镜像的“地方”,相当于我们下载软件的“应用商店”仓库,就是专门存放Docker镜像的“服务器”,我们需要什么镜像,就从仓库里“下载”(专业说法叫“拉取”),下载到本地后,再启动成容器。就像我们手机下载APP,要去应用商店;我们下载Docker 镜像,就要去Docker 仓库。核心作用就是:存放镜像、供我们下载镜像。
企业常用仓库
Docker 官方仓库(Docker Hub):全球最大的镜像仓库,里面有各种常用的镜像(MySQL,PHP等),但下载速度可能较慢;国内仓库(阿里云、腾讯云镜像仓库):国内企业最常用,下载速度快,和官方仓库内容基本一致,


仓库=镜像的“应用商店”=存放模板的地方,


四 Docker安装

1.更新系统基础环境
先更新系统软件包,补齐基础依赖,避免后续安装、运行报错,这是我们运维部署服务前的固定习惯。

dnf update -Y
dnf install wget curl -y


2.一键安装 Docker
直接使用欧拉自带的dnf包管理器,一行命令完成安装,操作简单高效。

dnf install docker -y

3.启动Docker并设置开机自启
Docker安装完成后,不会自动运行,我们手动启动,同时配置开机自启,服务器重启后自动生效,符合企业运维规范。

systemctl start docker
systemctl enable docker


4.验证Docker安装成功
 

docker -v

五 Docker常用命令

镜像操作命令

1. 拉取镜像

# 拉取最新nginx
docker pull nginx
# 指定版本
docker pull nginx:1.25-alpine

2. 查看本地镜像

docker images
# 精简列表
docker images -q

3. 删除镜像

# 指定镜像ID/名称删除
docker rmi nginx:1.25-alpine
# 强制删除
docker rmi -f 镜像ID
# 清理所有悬空无用镜像
docker image prune -y

4. 镜像导出 / 导入(离线迁移)

# 导出本地镜像
docker save -o nginx.tar nginx:1.25-alpine
# 导入镜像
docker load -i nginx.tar

5. 构建自定义镜像(Dockerfile)

docker build -t my-web:v1 .

容器生命周期(run/start/stop/restart/rm)

1. 新建并启动容器(最核心)

# 基础:后台运行nginx,映射主机8080→容器80端口
docker run -d -p 8080:80 --name my-nginx nginx

# 常用完整参数解释
# -d 后台守护运行
# -p 宿主机端口:容器端口 端口映射
# --name 自定义容器名
# --restart always 开机自启
# -v 挂载数据卷
docker run -d \
  -p 8080:80 \
  --name my-nginx \
  --restart always \
  nginx

2. 启停、重启容器

# 停止
docker stop my-nginx
# 启动已存在容器
docker start my-nginx
# 重启
docker restart my-nginx
# 强制杀掉
docker kill my-nginx

3. 删除容器

# 删除停止状态容器
docker rm my-nginx
# 强制删除运行中容器
docker rm -f my-nginx
# 一次性清理所有停止的容器
docker container prune -y

查看容器列表

# 正在运行的容器
docker ps
# 所有容器(含已停止)
docker ps -a
# 只输出容器ID
docker ps -aq

进入容器内部操作

# 交互式进入nginx容器
docker exec -it my-nginx /bin/bash

# alpine镜像无bash,用sh
docker exec -it my-nginx sh

# 退出容器终端:exit

文件拷贝(宿主机 ↔ 容器)

# 宿主机文件 → 容器内
docker cp /root/index.html my-nginx:/usr/share/nginx/html/

# 容器内文件 → 宿主机
docker cp my-nginx:/etc/nginx/nginx.conf /root/

日志排查

# 实时滚动看日志
docker logs -f my-nginx

# 只看最后100行
docker logs --tail 100 my-nginx

# 带时间戳
docker logs -tf my-nginx

数据挂载 volume(持久化)

1. 绑定宿主机目录(常用)

# 宿主机/nginx/html挂载到容器网页目录
docker run -d -p 8080:80 --name nginx-v \
-v /data/nginx/html:/usr/share/nginx/html \
nginx

2. Docker 管理卷

# 创建卷
docker volume create nginx-data
# 使用卷启动容器
docker run -d -p 8080:80 -v nginx-data:/usr/share/nginx/html nginx
# 查看卷列表
docker volume ls
# 删除无用卷
docker volume prune -y

端口、IP、详情查看

# 查看容器端口映射
docker port my-nginx

# 查看容器完整元数据(JSON)
docker inspect my-nginx

# 单独提取容器IP
docker inspect -f '{{.NetworkSettings.IPAddress}}' my-nginx

镜像打包提交(不推荐生产,临时测试用)

# 修改容器后,提交为新镜像
docker commit my-nginx my-nginx-new:v1

系统全局清理命令(常备)

# 一键清理:停止容器、无用镜像、无用卷、网络
docker system prune -a -y

docker-compose 常用(多容器编排)

# 前台启动
docker-compose up
# 后台启动
docker-compose up -d
# 停止
docker-compose down
# 重启
docker-compose restart
# 查看日志
docker-compose logs -f

测试验证全套示例(一键跑通)

# 1. 拉取nginx
docker pull nginx
# 2. 启动
docker run -d -p 8090:80 --name test-nginx --restart always nginx
# 3. 查看是否运行
docker ps
# 4. 浏览器访问 服务器IP:8090 看到nginx欢迎页即成功
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐