Docker教程

简介: Docker 是一个开源容器化平台,通过镜像和容器实现应用的快速部署与隔离。本文详细介绍 Docker 的核心概念与常用命令:包括镜像管理(查看、拉取、构建、导出/导入)、容器操作(启动、停止、日志、执行命令)、数据卷与网络配置、Dockerfile 编写、Compose 编排及镜像加速设置,帮助用户高效使用 Docker 进行开发与运维。

Docker

一.images(镜像)

images(镜像):镜像就想Linux操作系统中Linux内核挂载的root文件系统.

命令:

1.查看有哪些镜像:

docker images [-option]
option:
-a : 所有镜像
-q : 只显示镜像id
--digests:显示镜像摘要信息
--no-trunc:显示完整的镜像信息

2. 从上面拉取镜像

docker pull [镜像名]:[标签]
标签就是版本的意思.

3. 搜索镜像(国内基本用不了)

docker search [镜像名]

4. 删除镜像

docker rmi [镜像名/镜像id]
-f : 强制删除
-a : 删除全部镜像

5. 构建镜像

docker build -t [镜像名] [DockerFile所在路径]

6. 导出镜像

docker save -o [保存目标的名称] [镜像名]

7. 导入镜像

docker load -i [镜像要保存到的位置]

8. 给镜像打Tag

docker tag [本地镜像][:Tag(有就填)] [目标镜像位置][:Tag(想要打的标签/版本号)]

9. History(build)

docker history [镜像名]

10.查看镜像/容器信息

docker inspect [镜像名/容器名]

二.Container(容器)

Container(容器):容器是镜像运行时的实体(就想把类实例化)

1. 查看有哪些容器

docker ps(只能查看正在运行的容器)
-a : 还可以查看没在运行的

2. 启动/停止/重启突发容器

docker start/stop/restart [容器名/id]

3. 强制停止容器

docker kill [容器名/id]

4. 删除容器(删除前要先停止)

docker rm [容器名/id]

5. 查看日志

docker logs [容器名/id]
-f : 就会实时在终端更新日志

6. 对容器进行命令操作(正在运行)

docker exec -it [容器名/id] bash
这样就可以以容器进入bash(也就是Linux系统的终端)

7. 运行一个容器

docker run [容器名/id]
这里也可以-it但是这里与exec不同的是这里是对没运行的容器先让他运行在进bash.
-v [容器内文件]:[宿主机文件]可以将宿主机的文件和容器内的文件关联(类似&)
-p [宿主机端口号]:[容器端口号]可以让宿主机的端口号和容器内端口号关联就可以在宿主机查看容器内的运行.
挂载数据卷到容器:
  • 1.-v [数据卷]:[需挂载到容器内的位置]
  • 2.-mount source=[数据卷],target=[需挂载到容器内的位置]

8. 把宿主机文件放入容器(以及反向操作)

docker cp [宿主机文件path] [容器名/id]:[容器内路径(可进bash用ls查看)]

9. 显示容器的资源占用情况

docker stats

10. 显示容器的进程信息

docker top [容器名/id]

11. 进入正在运行的容器终端(类似日志/不同的是如果停止容器会被kill)

docker attach [容器名/id]
查看

三.数据卷(Volume)

Volumes(数据卷):数据卷是一个可供一个或多个容器使用的位于宿主机上特殊目录

1. 创建一个数据卷

docker volume create [数据卷名]

2. 查看数据卷信息

docker volume ls

3. 删除数据卷

docker volume rm [数据卷]

4. 查看数据卷信息

docker inspect [数据卷]

四.DockerFile

1. 指定一个镜像

FROM [容器名]:[TAG]

2. 设置工作目录

WORKDIR [工作目录]

3. 拷贝文件

min:

COPY [需要拷贝文件位置] [拷贝到的位置]

max(支持URL和自动解压):

ADD [需要拷贝文件位置] [拷贝到的位置]

4. 在构建时需要运行指令(会在前面设置的工作目录下执行)

RUN [command]

5. 容器启动后命令(覆盖/不覆盖)

覆盖:

CMD ["command 1",...,"command n"]

不覆盖:

ENTRYPOINT ["command"]

6. 声明监听端口

EXPOSE [端口号]

7. 创建挂载点

VOLUME ["位置"]

8. 给某变量打注释

LABEL [变量]=["注释"]

9. 配置环境变量(在容器运行过程中仍然存在并且可查看)

ENV [键值]=[配置内容]

10. 配置在容器运行是可修改的环境变量并且不会保存在容器内

ARG [键值]=[配置内容]

11. 容器的健康检查

HEALTHCHECK [op] CMD [command]
一般command是curl -f 端口网址 || exit 1

op:

--interval [间隔时长]
--timeout [命令运行时长]
--retries [连续失败次数上限]

五.容器间的桥接(网络相关)

由于容器的端口是动态的会变且没法使用容器名字crul,所以我们想到了创建一个网络配置,并且给容器配置该网络配置就可以用容器名字访问端口了.

1. 创建网络配置:

docker network create [网络名字]
指定网络驱动
-d [网络驱动(不懂先写bridge)]
2. 查看网络
docker network ls
3. 查看网络配置信息
docker network inspect [网络名]
4. 连接容器/断开连接
docker network connect [网络名] [容器名/id]
docker network disconnect [网络名] [容器名/id]
5. 删除网络配置
docker network rm [网络名]

六.Docker Compose

yml文件的构建

# compose版本声明
version:'3'

# services服务
sercices:
    [服务名]:
    # 配置镜像
    images: [镜像名]:[TAG]
    # 配置容器
    container_name: [容器名]
    # 端口声明
    ports:
    - ["宿主机:容器"]
    # 数据卷挂载
    volumes:
    - [数据集名字]:[挂载目录]
    # 配值网络
    networks:
    - [网络名字]

volumes:
    [数据卷名字]:
networks:
    [网络名字]:
        driver: [bridge(网络驱动)]

七. Proxy代理(Docker镜像加速)

1.Ubuntu虚拟机下:

# 找到docker/daemon.josn(找不到自己建)
# 添加:
{
   
    "registry-mirrors": [
        ["镜像地址1(下面会列出一些)"],
        .....,
        ["镜像地址n(下面会列出一些)"]
    ]
}
重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker

2. Windows下

打开docker Desktop -> setting(就是设置一个齿轮图标) -> Docker Engine
然后
{
   
  "features": 
  {
   
    "buildkit": true
  },
  "registry-mirrors": [
    # 在这里添加 ok?
    ["镜像地址1(下面会列出一些)"],
        .....,
    ["镜像地址n(下面会列出一些)"]
  ]
}
点击Apply

3.镜像地址列举(如果已经暂停服务就不要再写了)

Coding:"https://hub-mirror.c.coding.net/",
DaoCloud:"https://docker.m.daocloud.io",
中科大:https://docker.mirrors.ustc.edu.cn/,
网易:"https://hub-mirror.c.163.com/",
百度:"https://mirror.baidubce.com",
南京大学:"https://docker.nju.edu.cn",
阿里云:"https://[your_id].mirror.aliyuncs.com"//阿里云的要自己申请自己复制

4.编排这些网址

我建议大家ping一下这些网址首先不能ping通的就不要写上去了,然后根据ping完后的速度从快到慢排序.
演示:
# 打开cmd/powershell,比如coding
ping hub-mirror.c.coding.net
目录
相关文章
|
10天前
|
人工智能 JavaScript Linux
【Claude Code 全攻略】终端AI编程助手从入门到进阶(2026最新版)
Claude Code是Anthropic推出的终端原生AI编程助手,支持40+语言、200k超长上下文,无需切换IDE即可实现代码生成、调试、项目导航与自动化任务。本文详解其安装配置、四大核心功能及进阶技巧,助你全面提升开发效率,搭配GitHub Copilot使用更佳。
|
4天前
|
JSON API 数据格式
OpenCode入门使用教程
本教程介绍如何通过安装OpenCode并配置Canopy Wave API来使用开源模型。首先全局安装OpenCode,然后设置API密钥并创建配置文件,最后在控制台中连接模型并开始交互。
1890 6
|
12天前
|
存储 人工智能 自然语言处理
OpenSpec技术规范+实例应用
OpenSpec 是面向 AI 智能体的轻量级规范驱动开发框架,通过“提案-审查-实施-归档”工作流,解决 AI 编程中的需求偏移与不可预测性问题。它以机器可读的规范为“单一真相源”,将模糊提示转化为可落地的工程实践,助力开发者高效构建稳定、可审计的生产级系统,实现从“凭感觉聊天”到“按规范开发”的跃迁。
1895 18
|
10天前
|
人工智能 JavaScript 前端开发
【2026最新最全】一篇文章带你学会Cursor编程工具
本文介绍了Cursor的下载安装、账号注册、汉化设置、核心模式(Agent、Plan、Debug、Ask)及高阶功能,如@引用、@Doc文档库、@Browser自动化和Rules规则配置,助力开发者高效使用AI编程工具。
1349 7
|
14天前
|
IDE 开发工具 C语言
【2026最新】VS2026下载安装使用保姆级教程(附安装包+图文步骤)
Visual Studio 2026是微软推出的最新Windows专属IDE,启动更快、内存占用更低,支持C++、Python等开发。推荐免费的Community版,安装简便,适合初学者与个人开发者使用。
1353 13
|
10天前
|
人工智能 JSON 自然语言处理
【2026最新最全】一篇文章带你学会Qoder编辑器
Qoder是一款面向程序员的AI编程助手,集智能补全、对话式编程、项目级理解、任务模式与规则驱动于一体,支持模型分级选择与CLI命令行操作,可自动生成文档、优化提示词,提升开发效率。
822 10
【2026最新最全】一篇文章带你学会Qoder编辑器
|
14天前
|
人工智能 测试技术 开发者
AI Coding后端开发实战:解锁AI辅助编程新范式
本文系统阐述了AI时代开发者如何高效协作AI Coding工具,强调破除认知误区、构建个人上下文管理体系,并精准判断AI输出质量。通过实战流程与案例,助力开发者实现从编码到架构思维的跃迁,成为人机协同的“超级开发者”。
1103 96
|
8天前
|
云安全 安全
免费+限量+领云小宝周边!「阿里云2026云上安全健康体检」火热进行中!
诚邀您进行年度自检,发现潜在风险,守护云上业务连续稳健运行
1182 2