Docker容器内容总结

目录

一、Docker概述

1.Docker是什么

2.Docker三个统一方式

3.Docker三要素

4.Docker底层原理

5.Docker常规命令

6.Docker网络

7.Docker散装的功能

二、Dockerfile

1.Dockerfile创建镜像流程

2.Dockerfile常规指令

三、Docker-Compose

1.YML文件内部控制参数

2.Docker-Compose命令

四、Consul

1.定义

2.启动consul后默认会监听的5个端口

五、Docker镜像仓库

1.分类

2.Harbor核心组件

3.Docker-Harbor私有仓库过程

4.私有仓库指向私有仓库的方式


一、Docker概述

1.Docker是什么

容器技术之一,是虚拟化技术迭代后的产物---->容器和虚拟化有何区别(容器和KVM有何区别)

核心点:KVM是完整的操作系统,但是容器共享内核的进程来支持

容器优势---->对于市场的流行的技术来说 微服务

容器:对应用程序和系统进行了解耦、发布方便、更新方便、移植方便、冗余备份方便(LB副本集)

2.Docker三个统一方式

  • 统一应用的封装 image
  • 统一应用环境 docekr engine
  • 统一应用的运行的方式 container容器 runc(容器运行时环境)

3.Docker三要素

  • 镜像:包含了各种环境或者服务(tomcat)的一个模板
  • 容器:是镜像(run)起来之后的一个实例,可以把容器看做一个简易版的linux环境容器就是集装箱(大鲸鱼logo上的集装箱)
  • 仓库:是存放镜像的场所,私有仓库 共有仓库 Docker hub (https://hub.docker.com

docker是一种 C/S端架构,server端位于系统,表现形势为dameon(守护进程)

4.Docker底层原理

  • cgroup(资源限制)
  • namespace(资源隔离) 6个命名空间(隔离)
    • UTS:主机名与域名
    • IPC:信号量、消息队列和共享内存
    • PID:进程编号
    • NETWORK:网路设备、网络栈、端口等
    • MOUNT:挂载点(文件系统)
    • USER:用户和用户组(3.8以后的内核才支持)

5.Docker常规命令

命令 含义
Docker images 查看本地镜像
Docker ps 查看正在运行容器
Docker run 运行容器
Docker start/stop/restart 容器的开启/停止/重启
Docker create 创建镜像
Docker tag 为镜像添加标签
Docker rm/rmi 删除容器/删除镜像
Docker build 构建自定义镜像
Docker push 上传镜像
Docker login/logout 登入和登出镜像
Docker commit 创建和改变镜像
Docker -it/-d/-v/-p(-P)/-c 交互式会话/不关闭容器/创建逻辑卷/指定端口/指定shell操作
Docker exec 进入容器
Docker version/info 查看Docker版本信息/详细信息
Docker pull/search 拉取镜像/搜索镜像
Docker logs 输出日志
Docker cp 复制,从宿主机到容器内,也可以容器内到宿主机
Docker save/load, <重定向输入(导入) 导入正在运行的容器
Docker export/import 导出正在运行的容器
network 查看网卡
top 查看运行状态
Docker stats 查看运行的容器状态
选项 含义
Docker-Compose up 创建和启动容器
Docker-Compose down 删除容器、网络、数据卷和镜像
Docker-Compose scale 指定一个服务容器启动数量
Docker-Compose exec 在容器里面执行命令
Docker-Compose build 重新构建服务

6.Docker网络

  • None:是最简单的网络模式,此网络模式表示将容器拥有自己的网络命名空间,但不会进行任何网络配置,这实际给了用户完全的自主权来给自己配置容器的网络
  • Host:容器使用宿主机的网络直接公开服务,这意味着你在容器中运行一个Web服务,那么它就直接绑定到主机的网络接口上,而不是通过Dcoker进行任何网络转发
  • Bridge:默认的网络模式,每个新创建的容器都将该网络分配一个IP地址,此网络的模式允许所有Docker容器之间以及Docker宿主机之间进行互相通信
  • Container:这种模式允许容器去共享另一个容器网络命名空间,这说明两个容器可以相同的网络接口和IP地址,他们共享的是同一网络命名空间
  • overlay:叠加网络,指的就是在物理网络层上搭建一层网络,通过某种技术再去构建一张相同的网络 这张称为逻辑网

7.Docker散装的功能

  • 挂载: ① 数据卷 ② 数据卷容器
  • 暴露: ① -p 指定 ② -P "默认分配" 49153为起始
  • 自定义网络 (指定容器IP)

二、Dockerfile

1.Dockerfile创建镜像流程

docker image 的制作---->过程:docker image镜像分层(① 内核-共享,② base image基础镜像层③ image 镜像层---->container容器工作层---->缓存复用)

基于镜像层介绍2个点:

  • 叠加能力:现在借助于overlay2 (存储引擎)
  • 分层分类(4层):lower(下层) upper(上层) worker(容器层) merged(视图/展示层)

2.Dockerfile常规指令

指令 含义
FROM 基础镜像(buid)
MAINTAINER 维护人员的信息
RUN 表示执行 ,并且RUN指令会产生一层新的镜像层
ENV 环境变量传入
ADD/COPY 将源文件复制到镜像中 ADD则可以使用URL下载复制镜像,会将tar.gz的包自动解压并复制过去;COPY只是复制
EXPOSE 指定新镜像加载到 Docker 时要开启的端口
VOLUME 在容器中创建一个挂载点
WORKDIR 为后续的 RUN、CMD、ENTRYPOINT 指定工作目录
USER 指定运行容器时的用户
HEATHCHECK 健康检查
CMD 启动容器时默认执行的命令或者脚本,Dockerfile只能有一条CMD命令。如果指定多条命令,只执行最后一条命令。 如果在docker run时指定了命令或者镜像中有ENTRYPOINT,那么CMD就会被覆盖。 CMD 可以为 ENTRYPOINT 指令提供默认参数。
ENTRYPOINT 设定容器启动时第一个运行的命令及其参数。 可以通过使用命令docker run --entrypoint 来覆盖镜像中的ENTRYPOINT指令的内容。

三、Docker-Compose

1.YML文件内部控制参数

  • name
  • 自定义挂载卷
  • 自定义env环境变量 运行前》自定义网络
  • 自定义端口
  • 自定义传参(运行后)
  • 可以同时对多个容器个性化定义/编排

2.Docker-Compose命令

命令 含义
build 重新构建服务
ps 列出容器
up 创建和启动容器
exec 在容器里面执行命令
scale 指定一个服务器启动数量
top 显示容器进程
logs 查看容器输出(日志)
down 删除容器、网络、数据卷和镜像
stop/start/restart 停止/启动/重启服务

四、Consul

1.定义

动态 发现和更新应用(配置中心 temlate)

consul agent 的server模式

consul agent dev 模式开发者模式 (能使用所有功能)

2.启动consul后默认会监听的5个端口

  • 8300:集群内部数据的读写和复制,Replication(副本同步)、Leader(领导者)、Forwarding(转发)
  • 8301:单个数据中心cossip协议通讯,Lan Cossip的端口
  • 8302:不同据中心gossip协议通讯,Wan Gossip的端口
  • 8500:提供获取服务列表,注册服务,注销服务等HTTP接口:提供UI服务
  • 8600:采用DNS协议提供服务发现功能,用于已注册的服务发现,查看节点信息端口

五、Docker镜像仓库

1.分类

  • registry 私有仓库的核心, 只有字符终端
  • 进阶版 harbor

2.Harbor核心组件

  • Proxy反向代理 通过一个前置的反向代理,接收浏览器,Docker客户端的请求,并且把请求转发给后端的不同的服务
  • Registry:负责存储Docker镜像,处理Docker pull/push 命令下载和上传
  • Core Services
  • Harbor:核心功能,包括UI、WebHook、Token
    • UI:提供图形界面
    • Webhook:网站一些服务功能(通知机制)
    • Token:令牌,提供身份验证服务
  • Log collector:负责日志(其他组件的日志 上传 下载 用户 访问等日志)的收集,收集这些日志,以供后期进行分析和健康检查
  • Databases:为核心组件,提供数据库服务,主要记录数据库镜像的源信息以及用户的身份信息
  • Job Services:主要用于镜像复制,本地镜像可以被同步到远程Harbor实例上
  • Adminserver:用于管理用户操作以及身份认证

3.Docker-Harbor私有仓库过程

  1. 所有的请求或认为的操作都会首先交给proxy(反向代理)
  2. proxy会先将请求转发给后端Core services,Core services 中包含
  3. UI、token(身份验证服务)、webhook(网站的一些服务功能)
  4. 转发给registry(镜像存储),若需要下载镜像等权限操作,需要通过Core services中的token令牌的身份验证服务才行
  5. 每一次下载和上传都产生操作记录,生成日志,保存至database中
  6. database记录保存镜像的元信息及用户与组的身份信息,通过验证授权才能允许相关操作

4.私有仓库指向私有仓库的方式

  • /etc/docker/daemon.json
  • /usr/lib/systemd/system/docker.servce insecure-registrues $HARBOR_IP (私有仓库的IP地址)
相关推荐
Java陈序员1 天前
轻量强大!一款现代化的 Kubernetes 集群管理与监控工具!
云原生·容器·kubernetes
爱吃橘子橙子柚子2 天前
3CPU性能排查总结(超详细)【Linux性能优化】
运维·cpu
Sheffield3 天前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker
Sheffield3 天前
Alpine是什么,为什么是Docker首选?
linux·docker·容器
马艳泽3 天前
win10下运行Start Broker and Proxy报错解决
docker
舒一笑4 天前
程序员效率神器:一文掌握 tmux(服务器开发必备工具)
运维·后端·程序员
NineData4 天前
数据库管理工具NineData,一年进化成为数万+开发者的首选数据库工具?
运维·数据结构·数据库
用户13573999256604 天前
Windows 从 0 搭建 WSL2 原生 AI 开发环境:Codex + Docker + VSCode
docker
vi_h4 天前
在 macOS 上通过 Docker 安装并运行 Ollama(详细可执行教程)
macos·docker·ollama
黑心老魔4 天前
通过 Docker 创建开发环境
docker·开发环境