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地址)
相关推荐
雪域迷影2 小时前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
福大大架构师每日一题3 小时前
22.1 k8s不同role级别的服务发现
容器·kubernetes·服务发现
莹雨潇潇3 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
Pythonliu74 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我4 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
tangdou3690986554 小时前
1分钟搞懂K8S中的NodeSelector
云原生·容器·kubernetes
小O_好好学5 小时前
CentOS 7文件系统
linux·运维·centos
哲伦贼稳妥6 小时前
一天认识一个硬件之机房地板
运维·网络·经验分享·其他
john_hjy6 小时前
11. 异步编程
运维·服务器·javascript
x晕x6 小时前
Linux dlsym符号查找疑惑分析
linux·运维·服务器