Docker课程笔记
Docker是什么
Docker是一种容器技术,它能够将软件及其所有依赖项打包到一个轻量级、可移植的容器中,从而实现在任何环境中的快速部署和运行。
为什么需要Docker
- 安装软件的挑战:软件安装过程中可能遇到下载困难、安装失败或运行出错等问题。
- 环境差异:软件在不同电脑上运行可能因为环境差异而出现问题。
- 虚拟机的开销:虚拟机技术虽然可以解决环境问题,但是资源开销大,成本高。
Docker的用途
- 构建:Docker可以将本地程序打包到固定环境中,避免重复配置工作。
- 共享:Docker通过中央仓库实现程序的方便共享和部署。
- 运行:Docker保证程序在相同环境中以相同方式运行,降低环境不一致导致的错误。
Docker的特点
- 标准化:Docker具有标准化的特点。
- 轻量级:Docker是轻量级的。
- 安全:Docker保证了安全性。
Docker的核心概念
- 镜像:程序和环境的统一打包体,包含核心程序和所需环境。
- 容器:镜像实例化后的具体对象,程序实际运行在容器内部。
- 仓库:集中存储镜像的地方,类似于maven的中央仓库或git HUB。
知识小结
Docker介绍
- Docker定义:Docker是一个容器技术,官网更新快,有新版公告、合作企业、应用广泛程度介绍。
- Docker与容器的关系:Docker是一种容器技术,性能更好,特性更丰富,应用更广泛。
容器概念
- 容器定义:容器是标准的软件单元,打包代码及所有依赖项,轻量级、独立、可执行。
- 容器作用:容器帮助解决环境问题,提高开发效率。
为什么需要Docker
- 安装软件困难:安装软件的风险与环境不一致问题。
- 虚拟机解决方案:虚拟机解决了环境问题,但成本高。
Docker的用途
- 构建时:使用Docker方便地将本地程序打包到固定环境中,避免重复配置工作。
- 共享时:Docker有统一的管理中心,方便程序共享与传输,提高整体效率。
- 运行时:Docker保证程序在相同环境以相同方式运行,降低环境冲突风险。
Docker架构
- 镜像:镜像是程序和环境的统一打包体,包含核心程序及所需环境。
- 容器:容器是镜像运行起来的产物,程序实际运行在容器内部。
- 仓库:仓库用于集中存储镜像,类似于maven中央仓库或git HUB。
实操部分
- 安装:介绍Docker在macOS、Windows和Linux下的安装方式。
- 容器操作:包括Docker容器的生成、运行、配置和连接。
- 使用Docker运行Redis:通过Docker运行Redis实例,连接与验证。
- 使用Dockerfile创建容器:Dockerfile的编写,创建自定义容器。
重点知识举例解释:
- Docker与虚拟机:想象你有一个装满各种食材的冰箱(虚拟机),每次做饭(部署应用)都需要整个冰箱。而Docker就像是将食材提前分装成小包装,每次只需要拿一小包(容器),这样既节省空间(资源占用小),又方便取用(部署快速)。
Docker 安装笔记
一、Docker的安装
1. Docker在MacOS上的安装
- 安装方式:Docker Desktop
- 安装步骤 :
- 访问官网,点击Get Started。
- 下载Docker Desktop并安装。
- 系统要求:macOS High Sierra (10.13)及以上,2010年或更新Mac硬件。
- 版本选择:社区版免费,商业版含额外服务。
2. Docker在Linux下的安装
- 配置国内yum源 :
- 使用
wget
从阿里云获取配置文件,替换默认yum源。
- 使用
- 卸载旧版本 :
- 使用
yum remove
命令卸载Docker及其相关组件。
- 使用
- 更新yum :
- 使用
yum check-update
和yum update
命令更新系统软件包。
- 使用
- 安装所需软件包 :
- 使用
yum install
命令安装依赖软件包。
- 使用
- 设置稳定的存储库 :
- 使用
yum-config-manager
命令添加阿里云Docker CE稳定版存储库。
- 使用
- 查看docker版本 :
- 使用
yum list
命令查看所有可安装的Docker版本。
- 使用
- 安装指定的版本 :
- 使用
yum install
命令安装指定版本的Docker CE。
- 使用
- 启动服务 :
- 使用
systemctl start docker
命令启动Docker服务。
- 使用
- 验证是否安装成功 :
- 使用
docker version
或docker info
命令查看Docker版本和信息。
- 使用
二、知识小结
- 查看CentOS版本 :使用命令
cat /etc/redhat-release
。 - Docker安装用户权限:必须使用root用户或具备管理员权限的用户。
- 安装命令与教辅资料:提供教辅资料供参考,无需背诵命令。
- 配置国内Yum源:替换为阿里云等国内源以加速下载。
- 清理与更新Yum源 :执行
yum clean all
和make cache
命令清理旧源。 - 卸载旧Docker版本:确保无残留避免版本冲突。
- 更新Yum :使用
yum update
命令更新系统。 - 安装Docker所需软件包:安装依赖软件包。
- 指定Docker仓库地址:使用阿里云Docker仓库地址。
- 查看可安装Docker版本 :
- 使用命令
yum list docker-ce --showduplicates | sort -r
选择稳定版(stable)安装。
- 使用命令
- 指定Docker版本安装:确保安装版本与教程一致。
- 启动Docker服务 :使用
systemctl start docker
命令启动。 - 验证Docker安装 :使用
docker version
和docker info
命令验证确认Docker安装成功。 - 安装注意事项:遵循步骤,避免版本不同、未配置国内源等导致的失败。
Docker 课程笔记
一、生成并运行 Docker 容器
1. 查看 Docker 命令
- 命令概览:Docker 提供了丰富的命令,包括管理容器、镜像、网络等。
- 常用命令:
help
、search
、run
等,用于查看帮助、搜索镜像、运行容器等。
2. 拉取 Ubuntu 镜像
- 命令:
docker pull ubuntu
- 默认标签:如果不指定版本,默认拉取最新版本(
latest
)。 - 下载过程:连接中央仓库进行下载,可能会因网络问题导致下载失败。
3. 镜像换源
- 原因:国内访问 Docker 中央仓库可能因网络问题导致下载缓慢或失败。
- 换源方法:
- macOS :在 Docker Engine 配置中添加
registry-mirrors
,指向国内镜像源(如网易、中科大)。 - Windows:类似 macOS,找到配置中心添加镜像源。
- Linux :编辑
/etc/docker/daemon.json
文件,添加镜像源后重启 Docker。
- macOS :在 Docker Engine 配置中添加
- 镜像源地址:
4. 运行容器
- 命令:
docker run -i -t ubuntu /bin/bash
- 参数解释:
-i
:交互式操作。-t
:分配一个伪终端。ubuntu
:镜像名。/bin/bash
:在容器内执行的命令。
- 效果:进入 Ubuntu 容器的命令行界面,可以执行 Ubuntu 系统内的命令。
- 退出容器:使用
exit
命令,容器会停止但不会被删除。
5. 搜索镜像
- 命令:
docker search redis
- 结果:列出与 Redis 相关的镜像,包括镜像名、描述、星级、是否官方等。
- 广泛性:广泛流传的软件通常都有对应的 Docker 镜像。
6. 内容总结
- 主要工作:生成并运行 Docker 容器。
- 命令使用:
help
:查看 Docker 命令帮助。pull
:拉取 Ubuntu 镜像。run
:运行容器并进入交互模式。
- 换源技巧:解决国内网络访问 Docker 中央仓库的问题。
- 搜索镜像:使用
search
命令查找相关镜像。 - 自动下载:如果运行容器时镜像未下载,Docker 会自动下载镜像。
二、知识小结
知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
---|---|---|---|
Docker 基础命令使用 | 使用 docker --help 查看命令帮助 |
区分不同命令的功能和用法 | 🌟 |
镜像管理 | search 、pull (下载)、build (构建)等命令 |
pull 和 build 的区别和用法 |
🌟🌟 |
容器管理 | run (运行)、start /stop (启停)、rm (删除)等命令 |
run 命令的参数含义,如 -i 、-t 、-b 、-bash |
🌟🌟🌟 |
换源操作 | macOS、Windows、Linux 下的换源方法 | 不同系统下的配置文件位置和内容 | 🌟🌟🌟🌟 |
实操演示 | 拉取并运行 Ubuntu 镜像,进入容器内部操作 | 换源后下载镜像,使用 run 命令启动容器 |
🌟🌟🌟 |
搜索镜像 | 使用 docker search 命令搜索镜像 |
搜索结果的解读和选择 | 🌟 |
小技巧 | docker run 时自动下载镜像,无需提前手动下载镜像 |
🌟 |
三、后台运行容器
1. 启动 Redis 容器
- 命令:
docker run -i -t redis /bin/bash
。这个命令用于启动 Redis 容器,并进入其内部命令行界面。 - 解释:
-i
表示以交互模式运行容器,-t
为容器重新分配一个伪输入终端,redis
是要运行的镜像名称,/bin/bash
是进入容器后要执行的命令。
2. 访问正在运行的容器
- 步骤:
- 使用
docker containers ls
命令查询正在运行的容器情况,获取容器 ID。 - 使用
docker exec -it 容器ID /bin/bash
命令进入正在运行的容器内部。
- 使用
- 解释:
docker containers ls
列出所有正在运行的容器,docker exec
允许用户在运行中的容器内执行命令,-it
参数使得用户能够以交互方式进入容器内部。
3. 后台启动 Redis 容器
- 命令:
docker run -d redis
。这个命令用于在后台启动 Redis 容器。 - 解释:
-d
参数表示在后台运行容器,这样即使关闭终端,容器也会继续运行。 - 效果:使用此命令启动的 Redis 容器不会在终端中显示运行过程,但会返回一个容器 ID,表示容器已在后台成功启动。
4. 内容小结
- 总结:
- 学会了如何启动 Redis 容器,并进入其内部命令行界面。
- 掌握了访问正在运行的容器的方法,能够进入容器内部进行操作。
- 了解了如何在后台启动 Redis 容器,使得容器能够在关闭终端后继续运行。
- 重点:
-d
参数的使用是后台运行容器的关键。- 通过
docker containers ls
和docker exec
命令可以管理和访问正在运行的容器。
四、知识小结
知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
---|---|---|---|
Docker 容器后台启动 | 使用 docker run -d 命令在后台启动容器 |
区分 -d 与 -it 参数的使用场景 理解后台运行的意义 |
🌟🌟 |
Redis 容器启动 | 使用 docker run -d redis 启动 Redis 容器 |
Redis 容器启动后的持续运行问题 如何确认 Redis 服务已启动 | 🌟🌟🌟 |
进入正在运行的容器 | 使用 docker exec -it <container_id> bash 进入容器 |
container_id 的获取方法 exec 与 run 命令的区别 |
🌟🌟🌟 |
后台运行的优势 | 后台运行容器,无需保持终端开启 | 后台运行与前台运行的区别 后台运行的应用场景 | 🌟 |
Redis 服务连接 | 使用 redis-cli 连接 Redis 服务 |
如何确认 Redis 服务已准备好接受连接 连接命令的正确使用 | 🌟🌟 |
容器状态查看 | 使用 docker containers ls 查看容器状态 |
如何解读 docker containers ls 的输出 容器 ID 的获取与应用 |
🌟🌟 |
五、访问自定义容器
1. 停止已运行的 Redis
- 操作:使用
docker container
命令查看运行的容器,并使用docker container stop
加上容器号来停止 Redis 容器。
2. 运行 Redis 容器
- 命令:
docker run -d -p 8888:6379 redis
- 解释:该命令启动 Redis 容器,并在后台运行。
-d
表示后台运行,-p
表示端口映射,将本机的 8888 端口映射到容器的 6379 端口(Redis 默认端口)。
3. 连接 Redis 服务
- 操作:使用
redis-cli -p 8888
命令尝试连接本机的 8888 端口上的 Redis 服务。 - 结果:连接成功,说明通过端口映射成功连接到了 Docker 内部的 Redis 服务。
4. 验证 Redis 服务
- 操作:
- 在连接到的 Redis 服务中,使用
keys *
命令查看所有 key,确认服务为空。 - 使用
set a b
命令设置一个 key-value 对。 - 再次使用
keys *
命令查看,确认 key-value 对已成功保存。
- 在连接到的 Redis 服务中,使用
- 验证:
- 另开一个终端,直接连接本机 6379 端口的 Redis 服务,使用
keys *
命令查看,确认该服务为空。 - 回到之前的终端,查看 8888 端口的 Redis 服务中的 key,确认与之前设置的相同。
- 另开一个终端,直接连接本机 6379 端口的 Redis 服务,使用
- 结论:通过对比两个 Redis 服务中的数据,证明了 8888 端口的 Redis 服务是 Docker 内部的,而非本机自身的。
5. 作用
- 端口映射(
-p
)建立了一个桥梁,让 Docker 外部和 Docker 内部进行连接,无需在本机安装 Redis 环境,只需下载 Docker 中已配置好的 Redis 环境即可使用。
六、知识小结
知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
---|---|---|---|
Docker 与 Redis 连接 | 使用端口映射方式连接本机与 Docker 中的 Redis 服务 | 端口映射命令的理解与应用 | ★★★☆☆ |
停止已运行的 Redis 容器 | 停止容器的命令操作 | ★★☆☆☆ | |
尝试连接未启动服务的端口(失败) | 确认服务未启动的提示信息 | ★★☆☆☆ | |
端口映射命令 | docker run -d -p 888:6379 redis -d :后台运行 -p :端口映射 888 :本机端口 6379 :Redis 默认端口 |
★★★★☆ | |
执行命令后,本机 888 端口访问的是 Docker 中 Redis 的 6379 端口 | 端口映射效果的理解 | ★★★☆☆ | |
验证连接 | 1. 使用 redis-cli -p 888 连接 Redis 2. 在 Redis 中生成并查看数据 |
确认连接成功与数据一致性的方法 | ★★★☆☆ |
对比本机 Redis 与 Docker 中 Redis 的数据差异 | 区分不同 Redis 实例的数据 | ★★★★☆ | |
端口映射的作用 | - 无需在本机安装 Redis 环境 - 快速搭建和使用 Redis 环境 | 端口映射在环境搭建中的优势 | ★★★☆☆ |
通过下载已配置好的 Docker 镜像,使用端口映射快速启动服务 | Docker 镜像与端口映射的结合应用 | ★★★★☆ |
七、Dockerfile
1. 创建文件夹并编写 Dockerfile
- 目的:制作自己的 Docker 镜像,方便推广和节省使用者配置环境的工作量。
- 步骤:
- 在本机创建一个专门用于制作镜像的文件夹,命名为 "dockerfile"。
- 进入该文件夹,使用
vim
创建一个 Dockerfile。 - 在 Dockerfile 中编写内容,第一行使用 "FROM" 指定基础镜像,如 "FROM ubuntu"。
- 使用 "CMD" 指令指定镜像启动后执行的命令,如 "CMD echo 'imook-java'"。
2. 利用文件制作镜像
- 命令:使用 "docker build -t myimage ." 命令来制作镜像。
docker build
:制作镜像的命令。-t myimage
:给镜像取名为 "myimage"。.
:指定 Dockerfile 所在的当前路径。
- 效果:执行命令后,Docker 会读取 Dockerfile 并制作镜像,最后显示镜像制作成功的画面。
3. 运行镜像并验证效果
- 命令:使用 "docker run myimage" 命令来运行镜像。
- 效果:运行镜像后,可以在终端看到 "imook-java" 的输出,验证镜像制作成功且能够正常运行。
- 验证:使用 "docker images" 命令可以查看当前所有的镜像,确认 "myimage" 镜像已经存在。
4. 后续
- 可以在 Dockerfile 中添加更多的命令和配置,以制作更复杂、功能更丰富的镜像。
八、知识小结
知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
---|---|---|---|
Dockerfile 作用 | 帮助开发者制作自己的镜像 | 镜像的作用与意义 | 🌟 |
制作镜像的原因 | 方便推广,节省对方工作量,有利于自己推广 | 镜像的推广价值 | 🌟 |
实战操作:创建文件夹 | 在 user/apple 下创建名为 dockerfile 的文件夹 | 文件夹命名及位置 | 🌟🌟 |
编写 Dockerfile | 使用 vim 创建 dockerfile,写入 from 和 cmd 命令 | from 和 cmd 命令的写法与意义 | 🌟🌟🌟 |
from 命令解释 | 指定基础镜像,如乌邦图 | 基础镜像的选择 | 🌟 |
cmd 命令解释 | 容器启动时执行的命令,如 echo "im ook-JAVA" | cmd 与 run 命令的区别 | 🌟🌟 |
制作镜像命令 | docker build -t myimage . | -t 参数的含义,点的含义 | 🌟🌟🌟 |
查看镜像命令 | docker images | 验证镜像是否生成成功 | 🌟 |
运行镜像命令 | docker run myimage | 运行镜像并查看效果 | 🌟🌟 |
后续扩展 | 在镜像中做更多事情,如复制文件、配置环境 | 镜像的进一步定制 | 🌟🌟🌟🌟 |