最近做的开源项目复现越来越多,发现自己在项目部署方面的实践太浅薄,平时往往就是编个码注重功能实现。
于是决定好好学习一下Docker。这篇基本完成后会开启K8s笔记。

核心概念

容器化能让我们快速部署、隔离环境和复现项目的运行条件,那么就不能不提到Docker

那么先理解三个概念:

  1. Image(镜像)
    类似一个系统模板,包含运行程序的所有依赖。

  2. Container(容器)
    一个实际运行中的项目环境。

  3. Dockerfile
    描述镜像怎么构建。

安全合规的Docker使用方案

公司电脑是装不上Docker Desktop的:一是有权限限制,二是Docker Desktop License不允许公司企业免费使用。

但是公司提供了内网镜像源Docker CE安装仓库

理解Docker的整体工作流程

比如你的项目想在Docker里跑,需要:

  1. 写一个Dockerfile(告诉Dockers环境和依赖)
  2. docker build打包成镜像
  3. docker run启动容器
  4. 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企业版。

  1. 添加公司Docker CE GPG Key并添加镜像仓库(公司内网)
待整理
  1. (可选)更新并移除旧版本
sudo apt-get update
sudo apt-get remove -y docker docker-engine docker.io containerd runc || true
  1. 安装docker-ce (这步下了至少一个小时……😭
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. 启动并设置开机自启
sudo systemctl enable --now docker

3. 配置镜像代理仓库

目的:确保从公司内网拉取镜像,不受外网限制。

  1. 编辑/etc/docker/daemon.json
  • 打开
sudo nano /etc/docker/daemon.json
  • 编辑:Ctrl + O回车Ctrl + X
待整理
  1. 重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker

4. 测试Docker是否能正常拉取镜像

目的:确认内网镜像访问权限与代理配置无误。

  1. 登录公司私有仓库
待整理
  1. 测试拉取
待整理
  1. 查看输出
# 类似如下格式则表示拉取成功
Status: Downloaded newer image for ……

5. (可选)给当前用户添加Docker权限

目的:避免每次都要sudo。

sudo usermod -aG docker $USER
newgrp docker

6. 启动容器 运行项目

目的:实际部署/运行镜像中的项目。

举例:

待整理

补充

为了优化我们在Ubuntu的使用体验,可以安装增强功能(Guest Additions):
点此安装iso镜像文件

  1. 上方任务栏 -> 设备 -> 安装增强功能。

  2. 启动终端,安装前置包。

sudo apt-get install gcc make perl
  1. 点击左侧边栏的光盘图标 -> VboxWindowsAdditions.exe (我这里是VBox_GAs_7.2.0)-> 选择运行软件:
    终端此时会自动执行安装命令。

  2. 重启再验证

sudo reboot
lsmod | grep vbox
  1. 如果出现vboxguest、vboxvideo等等:
    那就是安装成功了!
    缺少你需要的功能或是没有成功,那就多安装几次试试;sudo命令安装方法同理。

  2. VirtualBox+Ubuntu全屏显示
    前五步完成后自动全屏显示了。

  3. 主机与虚拟机之间的复制粘贴

    Oracle VirtualBox管理器 -> 设置 -> 常规 -> Features/高级

把Shared Clipboard(共享粘贴板)和Drag-and-Drop(拖放)都设置为双向。

如果你装了很久都没能复制粘贴……😭请一定要注意:桌面环境可直接Ctr+C/V,但是终端需要Ctrl+Shift+C/V!!!

参考教程

  1. (14 封私信 / 78 条消息) Docker入门教程(非常详细)从零基础入门到精通,看完这一篇就够了 - 知乎

  2. 安装Ubuntu遇见正在复制文件卡住时,仅需断网即可-CSDN博客

  3. VirtualBox-Ubuntu-主机和虚拟机实现互相复制粘贴 - 夏夜星空晚风 - 博客园

  4. VirtualBox下载安装-创建Ubuntu虚拟机-增强功能(共享剪切板,共享文件夹)-中文输入法ibus(pinyin)-Chrome_virtualbox7.2 guest additions-CSDN博客

  5. 公司善良IT大佬の建议