C06S01-Docker架设

一、Docker

1. Docker概述

微服务是一类不是以完整物理机为基础的服务软件,而是借助宿主机的性能,以小量的形式,单独部署应用。

Docker是一个开源的应用容器引擎,基于go语言开发的,使用Apache的协议,是在linux里面运行的容器化的开源工具。是一种轻量级的虚拟机。

Docker的图标是一个托着集装箱的鲸鱼,鲸鱼代表着宿主机,集装箱表示一个个独立的应用。每个应用之间都是互相隔离和独立的。
Docker的设计宗旨:封装、发布、部署、运行、销毁。

每个Docker应用都是单独运行的,该技术是基于Linux系统的namespace而实现。namespace是Linux内核的一种特性,允许将一组系统资源进行隔离,使得每个namespace中的进程看似在系统中拥有独立的资源。

Linux有六个命名空间:

命名空间说明
UTS隔离主机和域名
PID隔离进程
NETWORK隔离网络设备、网络栈、端口
MOUNT隔离挂载点
IPC隔离信号量、消息队列、共享内存
USER隔离用户、用户组

Docker三大核心概念:仓库、镜像、容器。仓库技术用于存储镜像的地方,也是获取镜像和上传镜像的地方;镜像是创建容器的基础,一个镜像就类似一个可执行的、包含源码的二进制包,包括容器允许的参数、设置、环境变量和配置文件等;容器是基于镜像创建的运行实例。

2. Docker安装

  1. 安装所需工具。

    apt-get -y install ca-certificates curl gnupg
    
  2. 信任Docker公钥。

    install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    chmod a+r /etc/apt/keyrings/docker.gpg
    
  3. 写入Docker软件源,并更新软件源列表。

    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
      "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    apt update
    
  4. 安装指定版本的Docker。

    apt -y install docker-ce=5:24.0.1-1~ubuntu.22.04~jammy docker-ce-cli=5:24.0.1-1~ubuntu.22.04~jammy containerd.io docker-buildx-plugin docker-compose-plugin
    
  5. 配置文件/etc/docker/daemon.json,设置镜像加速地址。

    {
        "registry-mirrors": [
        	"https://docker.unsee.tech",
            "https://dockerpull.org",
            "https://docker.1panel.live",
            "https://dockerhub.icu"
        ]
    }
    

    保存文件后,更新系统的服务管理,并重启Docker服务。

    systemctl daemon-reload
    systemctl restart docker
    

二、常用命令

1. 镜像操作命令

  1. 拉取镜像。

    docker pull 镜像名称[:镜像标签]
    
  2. 查看镜像。

    docker images
    
  3. 保存镜像。

    docker save 镜像名称[:镜像标签] -o 文件名
    
  4. 导入镜像。

    docker load -i 文件名
    
  5. 删除镜像。

    docker rmi [-f] 镜像名称[:镜像标签]
    

2. 容器操作命令

  1. 创建并启动容器。

    docker run [选项] 镜像名称[:镜像标签] [命令]
    
    • 常见选项:

      • -i:交互模式运行容器,通常与-t配合使用。

      • -t:分配一个伪终端,通常与-i配合使用。

      • -d:后台运行容器。

      • –name:设置容器名称。不手动设置,会由系统分配。

      • -P:随机端口映射,随机映射一个宿主机的端口到容器端口。

      • -p:指定端口映射,指定映射宿主机端口到容器端口。

    • 命令:用于指定容器启动后要执行的命令,不设置则会执行默认的命令。

  2. 查看容器。

    docker ps [选项]
    
    • 常见选项:
      • -a:列出所有容器。没有这个选项就只列出正在运行的容器。
  3. 查看容器的详细信息。

    docker inspect 容器名称或容器ID
    
  4. 进入容器。

    docker exec -it 容器名称或容器ID /bin/bash
    
  5. 删除容器。

    docker rm [-f] 容器名称或容器ID
    
openstack dashborad进不去3-13 11:47:04.585 42651 WARNING keystone.server.flask.application [req-b1130741-8231-4a45-801c-c30ee024aee5 db7aa867257240efa04ac6ac461982d6 1f4e139da2f84adb8cab1a32555c06a9 - default default] You are not authorized to perform the requested action: identity:list_roles.: ForbiddenAction: You are not authorized to perform the requested action: identity:list_roles. 2025-03-13 11:49:58.610 42650 WARNING keystone.server.flask.application [req-74204480-07b9-4f25-8c89-112e159f7624 db7aa867257240efa04ac6ac461982d6 1f4e139da2f84adb8cab1a32555c06a9 - default default] You are not authorized to perform the requested action: identity:list_groups.: ForbiddenAction: You are not authorized to perform the requested action: identity:list_groups. ^C [root@gxc1-controller ~]# ^C [root@gxc1-controller ~]# sudo tail -f /var/log/keystone/keystone.log 2025-03-13 11:46:55.963 42650 WARNING keystone.server.flask.application [req-4ed35e62-5186-40b8-9cf7-49d0c3e0e387 db7aa867257240efa04ac6ac461982d6 1f4e139da2f84adb8cab1a32555c06a9 - default default] You are not authorized to perform the requested action: identity:list_groups.: ForbiddenAction: You are not authorized to perform the requested action: identity:list_groups. 2025-03-13 11:47:04.578 42651 WARNING py.warnings [req-b1130741-8231-4a45-801c-c30ee024aee5 db7aa867257240efa04ac6ac461982d6 1f4e139da2f84adb8cab1a32555c06a9 - default default] /usr/lib/python2.7/site-packages/oslo_policy/policy.py:997: UserWarning: Policy identity:list_roles failed scope check. The token used to make the request was project scoped but the policy requires ['system'] scope. This behavior may change in the future where using the intended scope is required warnings.warn(msg) 2025-03-13 11:47:04.585 42651 WARNING keystone.server.flask.application [req-b1130741-8231-4a45-801c-c30ee024aee5 db7aa867257240efa04ac6ac461982d6 1f4e139da2f84adb8cab1a32555c06a9 - default default] You are not authorized to perform the requested action: identity:list
03-14
### OpenStack Dashboard 访问问题及身份验证错误分析 当遇到 `identity:list_users` 或其他类似的权限拒绝错误时,通常是因为用户的令牌作用域(scope)未正确设置或缺少必要的角色权限。以下是针对此问题的详细解决方案: #### 1. 配置 Keystone 身份服务 确保 Keystone 已正确定义并创建了所需的服务实体和服务端点。可以通过以下命令完成操作: ```bash openstack service create --name keystone --description "OpenStack Identity" identity[^1] ``` #### 2. 查看日志文件定位问题 如果在 Horizon 中遇到了特定的操作被拒绝的情况,可以检查 Apache 日志以获取更多信息: ```bash vim /var/log/httpd/openstack_dashboard-error.log[^2] ``` 通过日志中的具体报错信息进一步确认问题所在。 #### 3. 安装和配置 Keystone 组件 为了确保 Keystone 的正常运行,需安装相关依赖包,并将其与 MariaDB 数据库集成。执行如下命令来安装所需的组件: ```bash yum install openstack-keystone httpd mod_wsgi memcached python-memcached -y[^3] ``` 同时,在 `/etc/keystone/keystone.conf` 文件中更新数据库连接字符串,将默认密码替换为自己设定的安全密码。 #### 4. 授权范围校验警告处理 对于 `identity:list_roles` 和 `identity:list_groups` 权限不足的问题,可能的原因在于当前登录用户的角色不具备这些 API 请求所需要的权限级别。需要为项目内的用户分配适当的角色,例如 admin 或 member 角色。可通过以下方式实现: ```bash openstack role add --project demo --user demo _member_ openstack role add --project demo --user admin admin ``` 另外,还需注意的是,某些请求可能会因为 token 缺少有效的 project scope 导致失败。因此建议在发起敏感资源查询前先切换到目标项目的上下文中再尝试重新加载页面或者刷新会话缓存。 #### 5. 修改 Policy.json 文件调整策略控制 最后一种可能性涉及 policy rules 设置不当引发的行为约束冲突现象。可编辑对应版本路径下的 policies 文件夹里的 json 文档修改规则表达式放宽限制条件满足实际需求即可解决问题比如允许非管理员也能读取组成员列表之类的场景应用实例演示代码片段如下所示: ```json { "identity:list_users": "", "identity:list_groups": "" } ``` 以上更改完成后记得重启 web server 及其关联进程使改动生效: ```bash systemctl restart httpd.service ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值