Docker的基础学习

Docker的基本使用

什么是Docker?

Docker--利用容器化技术给应用程序封装独立环境,每个运行环境都包含一个容器,运行容器的计算机被称为宿主机

与虚拟机的区别是:Docker容器之间共用一个系统内核;而每个独立的虚拟机都包含一个完整的操作系统的内核

什么是镜像?

镜像是一个只读的模板,它包含了运行应用程序所需的一切:代码、运行时、库、环境变量和配置文件

什么是镜像仓库?

镜像仓库是用于存放分享镜像的地方

  • 官方镜像仓库--Docker Hub

什么是容器?

  • 容器是镜像的运行实例,镜像是静态的,而容器是动态的,我们对容器的任何修改(如创建,启动,停止,删除)都不会影响镜像本身

什么是仓库?

  • 仓库是集中存放镜像文件的地方

Windows系统安装Docker

  • 启动Windows的功能
  • 重启电脑后,安装WSL,打开cmd以管理员身份运行,输入命令:
shell 复制代码
wsl --set-default-version 2

wsl --update --web-download
  • 安装后,去官网下载Docker Desktop
  • 下载完成后,进入到图形化页面,我们需要配置docker国内镜像源
json 复制代码
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://mirror.ccs.tencentyun.com",
    "https://docker.m.daocloud.io",
    "https://docker.imgdb.de",
    "https://docker-0.unsee.tech",
    "https://docker.hlmirror.com",
    "https://docker.1ms.run",
    "https://func.ink",
    "https://lispy.org",
    "https://docker.xiaogenban1993.com"
  ]
}

基本命令

  • 从仓库下载镜像
bash 复制代码
docker pull 镜像名
  • 修改配置文件,设置镜像站
bash 复制代码
vi 
bash 复制代码
"registry-mirrors":[
			"https://docker.m.daocloud.io",
			"https://docker.1panel.live",
			"https://hub.rat.dev"
]

重启docker

bash 复制代码
service docker restart
  • 列出所有下载过的镜像
bash 复制代码
docker images
  • 删除镜像
bash 复制代码
docker rmi 镜像名
  • 使用镜像创建并运行容器
bash 复制代码
docker run 镜像名
  • 查看进程状况(运行的容器)
bash 复制代码
docker ps
  • 让容器在后台运行,不阻塞当前窗口
bash 复制代码
docker run -d

注意:镜像如果不存在于本地仓库中,则会进行自动拉去,所以可以省略pull命令

  • 与宿主机端口进行映射
bash 复制代码
docker run -p 端口号

例如80:80,冒号前位宿主机端口,冒号后为容器端口

  • 把宿主机与容器的文件目录进行绑定,相互影响,目的是持久化保存数据
bash 复制代码
docker run -v
  • 强制删除容器
bash 复制代码
docker rm -f 容器id

卷的创建

  • 新建一个挂载卷
bash 复制代码
docker volume create 挂载卷名
  • 列出所有创建过的卷
bash 复制代码
docker volume list
  • 删除指定的挂载卷
bash 复制代码
docker volume rm 挂载卷名
  • 删除所有容器都未使用过的卷
bash 复制代码
docker volume prune -a

docker run 的其他参数

  • -e:往容器中传递环境变量
  • --name:自定义容器名,不可重复
  • -it:让控制台进入容器交互
  • -rm:容器一旦停止就删除掉
  • --restart :配置容器在停止时的重启策略
    • always:容器停止,立刻重启
    • unless-stopped:手动停止则不会重启,自动停止会重启

调试命令

  • 启动或停止一个容器
bash 复制代码
docker start/stop
  • 查看所有容器
bash 复制代码
docker ps -a
  • 查看指定容器信息
bash 复制代码
docker inspect 容器id
  • 只创建容器但不运行
bash 复制代码
docker create 容器名
  • 查看容器日志
bash 复制代码
docker logs 容器id  -f追踪输出

Docker原理

  • Cgroups:限制隔离进程的资源使用
  • Namespaces:隔离进程的资源视图
  • 如果要进行多应用的容器化部署,就需要把每一个模块都打包成一个个独立的容器,这个时候我们可以使用Docker compose,它使用yml文件管理多个容器,会自动创建子网
相关推荐
我是谁??1 小时前
【2】基于 Docker + YOLOv8 环境实现模型蒸馏实战(GTX1660S + Ubuntu22.04)
yolo·docker·容器
风落无尘9 小时前
Stable Diffusion WebUI & ComfyUI 完整安装教程:官方部署+一键整合包+Docker容器化(2026最新)
docker·容器·stable diffusion
辰海Coding10 小时前
MiniSpring框架学习笔记-解决循环依赖的简化IoC容器
笔记·学习
晓梦林10 小时前
cp520靶场学习笔记
android·笔记·学习
心中有国也有家11 小时前
cann-recipes-infer:昇腾 NPU 推理的“菜谱集合”
经验分享·笔记·学习·算法
Upsy-Daisy11 小时前
AI Agent 项目学习笔记(八):Tool Calling 工具调用机制总览
人工智能·笔记·学习
LuminousCPP13 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习
魔法阵维护师13 小时前
从零开发游戏需要学习的c#模块,第十四章(保存和加载)
学习·游戏·c#
CodeMartain14 小时前
Dify Windows 原生部署(无 Docker、纯本地)
运维·docker·容器