docker疑问总结

docker疑问总结

什么是docker?docker解决什么问题?

答:docker是为开发者和系统管理员,在容器中开发、部署、运行程序的平台(抽象概念,可以理解为有了这个平台,docker命令才能用)。使用linux容器去部署程应用序成为集装箱化。
解决:便捷安装;节约计算资源(内存、cpu)

docker有那些核心概念?

答:容器、镜像

镜像和容器

  1. 镜像是一个可执行包,包包含运行一个应用程序所需要的所有,–代码、运行时间、环境变量、配置文件。通过运行一个镜像启动一个容器
  2. 容器是一个运行时镜像的实例。

什么是集装箱化

  1. 灵活、轻量级、可交替的、可移植的、可称量的、可叠起堆放的
  2. 比如以前的码头装载货物五花八门小零件,不易装已不易卸。就如同我们在发布程序的时候要在服务器装环境以及各种依赖。要装几十上千台服务器呢?这时候把一套已经配置好的环境,直接将dockerfile文件分发,运行则会根据文件构建出容器所需的镜像(或者是打包成一个镜像,有些直接把应用程序的代码都一起打包成镜像,直接上服务器),而且保证各个环境是一样的。

容器虚拟机的区别?

  1. 一个容器运行是在linux上,与其他容器是共享主机的内核,他运行一个离散的过程,比其他可执行文件更轻,更不耗内存
  2. 一个虚拟机(VM)运行一个完整的“游客”操作系统。提供比应用程序所需的更过资源。

用docker来开发需要了解那些知识点?

答:了解基本概念;最最重要的是dockerfile的编写。dockerfile文档

如何编写一个dockerfile来运行yii2?

通过docker run运行的时候会自动到仓库搜索

$ docker run -p 6389:6379 --name redis-master -v /usr/local/redis:/etc/redis/ -d redis redis-server /etc/redis/redis-6389.conf
-d 启动守护进程,程序后台运行
-p 6389:6379 : 将主机的6389端口,映射到容器6379端口,用于外网访问容器
--name redis :容器名字
-v /usr/local/redis/:/etc/redis :将主机中配置文件挂载到容器中
-d redis 镜像名字(先从本地获取,再从仓库)
redis-server /ect/redis/redis--6389.conf 指定配置文件启动redis服务

docker 常用命令

docker ps
docker rm redis-master
docker run
docker exec -it redis-master bash 进入到容器

redis主从复制

  1. 主从复制是指将一台redis服务器的数据,复制到其他的redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点
  2. 默认情况下,每台redis服务器都是主节点,且一个主节点可以有多个从节点(或者没有从节点),但一个从节点只能有一个主节点

主从复制的作用

  1. 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
  2. 故障恢复:当主节点出现为题时,可以由从节点提供服务,实现快速的故障恢复,实际上是一种服务冗余
  3. 负载均衡(读写分离):在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供服务(即写redis数据时应用连接主节点,读分担服务器负载,尤其是在写少读多的场景下,通过多个节点分担读负载,可以大大提高redis服务器的并发量)
  4. 高可用即使:除了伤处作用外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是redis高可用的基础。

启动主从服务

1.进入从机
docker exec -it redis-slave bash
SLAVEOF 47.98.147.49 6389 #指定主机是谁
INFO replication #查看主或从机关系

keys * 不能乱用,key多的时候容易卡爆redis 是on级别的——遍历
  1. 配置文件
    在从服务的配置文件中加入:slaveof
  2. 启动命令
    redis-server 启动命令后加入 --slaveof
  3. 客服端命令
    redis服务器启动后,直接通过客户端执行命令:slaveof 则该redis实例成为从节点。通过info replication 命令可以看到复制的一些参数信息。
    修改配置,把redis保护模式关掉,测试阶段默认允许所有的客户端,不设置密码访问

主从复制原理

  1. 主从复制过程大体可以分为3个阶段,连接建立阶段(即准备阶段),数据同步阶段,命令传播阶段
  2. 在从节点执行slaveof 命令后,复制过程便开始运作,复制过程大致分成6个过程,如下:
    在这里插入图片描述
<think>好的,用户现在问的是如何在Ubuntu上更新Docker。之前他们遇到了权限问题,现在可能已经解决了,现在需要更新Docker。我需要先回顾一下之前的对话,确保这次回答的一致性和相关性。 首先,用户之前遇到了使用docker load时的权限问题,我提供了几种解决方案,包括使用sudo、修改文件权限、加入docker用户组等。现在他们的问题是关于更新Docker,可能需要了解如何正确升级Docker引擎,包括卸载旧版本、添加仓库、安装新版本等步骤。 接下来,我需要确定用户在Ubuntu上的Docker安装方式。通常有两种:通过Ubuntu仓库安装或者使用Docker官方仓库。由于官方仓库通常提供最新版本,所以用户可能希望从那里更新。因此,我需要指导他们如何确保使用官方仓库,并执行更新步骤。 另外,用户可能对更新过程不太熟悉,需要分步骤说明,确保他们能够安全地进行操作,而不会导致现有容器或镜像的丢失。因此,我应该提醒他们在更新前备份数据,或者说明Docker更新通常不会影响现有数据,但最好还是备份。 可能还需要检查当前安装的Docker版本,确认是否需要更新,或者用户是否只是想了解常规的更新方法。因此,在步骤中包括如何检查当前版本,以及如何执行更新命令。 另外,用户可能对更新后的配置有疑问,比如是否需要重启服务,或者如何处理可能出现的依赖问题。因此,在步骤中需要包括更新后的验证步骤,比如运行hello-world镜像,确认Docker正常工作。 同时,考虑到用户之前遇到权限问题,可能在更新后需要重新配置用户组权限,或者确保他们仍然在docker用户组中。不过,通常更新Docker不会影响用户组设置,但可能需要提醒用户检查。 最后,总结可能的注意事项和常见问题,帮助用户避免常见错误,比如使用错误的仓库,或者忘记更新软件包索引等。确保回答结构清晰,步骤详细,适合不同水平的用户理解。</think>以下是 Ubuntu 系统更新 Docker 的详细步骤: --- ### **1. 确认当前 Docker 版本** 更新前先查看当前安装的 Docker 版本: ```bash docker --version ``` --- ### **2. 卸载旧版本 Docker** 如果 Docker 是通过 Ubuntu 官方仓库安装的(非官方源),建议彻底卸载旧版本以避免冲突: ```bash sudo apt-get remove docker docker-engine docker.io containerd runc ``` --- ### **3. 配置 Docker 官方仓库** Docker 官方推荐通过仓库安装以获取最新版本: #### **步骤 1:安装依赖工具** ```bash sudo apt-get update sudo apt-get install ca-certificates curl gnupg ``` #### **步骤 2:添加 Docker 官方 GPG 密钥** ```bash sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg ``` #### **步骤 3:添加 Docker 仓库** ```bash echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` --- ### **4. 更新并安装最新 Docker** #### **更新软件包索引** ```bash sudo apt-get update ``` #### **安装 Docker 最新版本** ```bash sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ``` --- ### **5. 验证更新** #### **检查 Docker 版本** ```bash docker --version ``` 输出示例:`Docker version 24.0.6, build ed223bc` #### **运行测试容器** ```bash sudo docker run hello-world ``` 若看到 `Hello from Docker!` 表示更新成功。 --- ### **6. 后续维护** #### **启用自动更新(可选)** 通过 Ubuntu 的 `unattended-upgrades` 自动更新 Docker: ```bash sudo apt-get install unattended-upgrades sudo dpkg-reconfigure unattended-upgrades # 选择启用自动更新 ``` #### **手动更新命令** 未来可直接通过以下命令更新: ```bash sudo apt-get update && sudo apt-get upgrade docker-ce ``` --- ### **常见问题** #### ❓ **更新后原有镜像和容器会丢失吗?** - **不会**。Docker 的镜像、容器和卷数据默认存储在 `/var/lib/docker`,更新不会删除这些数据。 #### ❓ **更新失败怎么办?** - 检查仓库配置是否正确(步骤3)。 - 清除 apt 缓存后重试: ```bash sudo apt-get clean sudo rm -rf /var/lib/apt/lists/* sudo apt-get update ``` --- ### **附:两种安装方式的区别** | **安装方式** | **官方仓库安装** | **Ubuntu 仓库安装** | |--------------------|--------------------------------------|-----------------------------| | 版本 | 最新稳定版 | 较旧(与 Ubuntu 版本绑定) | | 更新频率 | 及时 | 延迟 | | 推荐场景 | 需要新功能或安全更新 | 稳定性优先 | 建议始终通过 Docker 官方仓库更新以获得最新功能和安全补丁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值