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文件管理多个容器,会自动创建子网
相关推荐
帷幕落秋23 分钟前
Docker镜像加速
运维·docker
帷幕落秋34 分钟前
Docker原理-理论基础
运维·docker
TTATTC36 分钟前
告别开源 Agent 的本地运维折磨:拆解阿里 QoderWork 的沙盒隔离架构与三级渐进式 Skills 编排实践
docker·开源
帷幕落秋39 分钟前
Docker常见命令总结
docker
程序员老赵1 小时前
Docker 部署 Redmine:轻松搭建私有化项目管理平台
docker·容器·开源
派大鑫wink1 小时前
纯前端实现软考中级·软件设计师备考学习网站
前端·学习
Baron X1 小时前
Eclipse Temurin 21 (JRE) Alpine 镜像获取、离线导入与推送操作
java·docker·eclipse·temurin
smartpi_ai1 小时前
51 单片机写好了,大模型语音怎么接?17T 全驱动的现成方案、双板串口分工的边界与画板前的三项硬件确认
单片机·嵌入式硬件·学习
小楼昨夜又东风1262 小时前
一文理清K8s PVC挂载完整流程
容器·rpc·kubernetes
辣知2 小时前
辣知·化智82 人类文明演化规律文化传承
学习