最近做的开源项目复现越来越多,发现自己在项目部署方面的实践太浅薄,平时往往就是编个码注重功能实现。
于是决定好好学习一下Docker。这篇基本完成后会开启K8s笔记。
核心概念
容器化能让我们快速部署、隔离环境和复现项目的运行条件,那么就不能不提到Docker。
那么先理解三个概念:
Image(镜像)
类似一个系统模板,包含运行程序的所有依赖。Container(容器)
一个实际运行中的项目环境。Dockerfile
描述镜像怎么构建。
安全合规的Docker使用方案
公司电脑是装不上Docker Desktop的:一是有权限限制,二是Docker Desktop License不允许公司企业免费使用。
但是公司提供了内网镜像源和Docker CE安装仓库。
理解Docker的整体工作流程
比如你的项目想在Docker里跑,需要:
- 写一个Dockerfile(告诉Dockers环境和依赖)
- 用
docker build打包成镜像 - 用
docker run启动容器 - 用
docker exec -it进去调试
在虚拟机中安装Docker
1. 创建虚拟机
目的:获得可控的Linux环境。
我安装的是Oracle VM VirtualBox。花了将近一周纠缠在装Ubuntu上😶
- 虚拟机系统镜像来自Ubuntu官网:https://ubuntu.com/download/desktop](https://ubuntu.com/download/desktop
- VirtualBoxVM->光驱->选择官网下载的镜像文件(.iso)
- 打开VM->Try or Install Ubuntu
- Ubuntu安装时非常非常容易卡死在复制文件/安装系统的步骤。这里建议一是:把镜像文件放在全英文目录下;二是:VM默认联网没问题,但在点击最后一个安装的选项前,断掉你的本机网络。
安装完成。登录VM并打开终端界面,执行:
# 更新系统并安装常用工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git ca-certificates gnupg lsb-release apt-transport-https
之后的部分内命令非企业外公开,因此后期会二次整理成文字描述形式~
2. 安装Docker CE
目的:获取Docker环境。
也就是进行换源+安装Docker CE企业版。
- 添加公司Docker CE GPG Key并添加镜像仓库(公司内网)
待整理
- (可选)更新并移除旧版本
sudo apt-get update
sudo apt-get remove -y docker docker-engine docker.io containerd runc || true
- 安装docker-ce (这步下了至少一个小时……😭
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 启动并设置开机自启
sudo systemctl enable --now docker
3. 配置镜像代理仓库
目的:确保从公司内网拉取镜像,不受外网限制。
- 编辑
/etc/docker/daemon.json:
- 打开
sudo nano /etc/docker/daemon.json
- 编辑:
Ctrl + O、回车、Ctrl + X
待整理
- 重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
4. 测试Docker是否能正常拉取镜像
目的:确认内网镜像访问权限与代理配置无误。
- 登录公司私有仓库
待整理
- 测试拉取
待整理
- 查看输出
# 类似如下格式则表示拉取成功
Status: Downloaded newer image for ……
5. (可选)给当前用户添加Docker权限
目的:避免每次都要sudo。
sudo usermod -aG docker $USER
newgrp docker
6. 启动容器 运行项目
目的:实际部署/运行镜像中的项目。
举例:
待整理
补充
为了优化我们在Ubuntu的使用体验,可以安装增强功能(Guest Additions):
点此安装iso镜像文件
上方任务栏 -> 设备 -> 安装增强功能。
启动终端,安装前置包。
sudo apt-get install gcc make perl
点击左侧边栏的光盘图标 -> VboxWindowsAdditions.exe (我这里是VBox_GAs_7.2.0)-> 选择运行软件:
终端此时会自动执行安装命令。重启再验证:
sudo reboot
lsmod | grep vbox
如果出现vboxguest、vboxvideo等等:
那就是安装成功了!
缺少你需要的功能或是没有成功,那就多安装几次试试;sudo命令安装方法同理。VirtualBox+Ubuntu全屏显示
前五步完成后自动全屏显示了。主机与虚拟机之间的复制粘贴
Oracle VirtualBox管理器 -> 设置 -> 常规 -> Features/高级
把Shared Clipboard(共享粘贴板)和Drag-and-Drop(拖放)都设置为双向。
如果你装了很久都没能复制粘贴……😭请一定要注意:桌面环境可直接Ctr+C/V,但是终端需要Ctrl+Shift+C/V!!!
