Docker的学习体验

2023-11-10

由于兴致使然,便想学习一点Docker技术。于是,写了这篇学习Docker的体会。笔拙,见谅。

第一件事——把网线插上

相信很多人都被官网的《Sample application》的docker build -t getting-started .给欺骗了。

fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/main/x86_64/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.11/main: temporary error (try again later)
ERROR: unable to select packages:
g++ (no such package):
    required by: world[g++]
make (no such package):
    required by: world[make]
python3 (no such package):
    required by: world[python3]

我查阅Github的Issue也走入了误区,添加了RUN echo -e "http://dl-cdn.alpinelinux.org/alpine/v3.11/main" > /etc/apk/repositories还是有问题

我于是修改了dockerfile:

 # syntax=docker/dockerfile:1
FROM node:12-alpine
RUN ping dl-cdn.alpinelinux.org
#  RUN echo -e "http://dl-cdn.alpinelinux.org/alpine/v3.11/main" > /etc/apk/repositories
RUN apk add --no-cache python g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]

通过Ping了解到网线没插
于是我注释了ping,直接运行

$sudo docker build --network=host -t getting-started .

等待build结束,执行:

$sudo docker run --network=host -dp 3000:3000 getting-started

第二件——学会使用梯子

根据安装Arch和Gentoo的体验,由于国内外网络速度差异太大,这里我找了一些apline的镜像供各位参考。

第三件——linux是一个很好的老师

dockerfile的内容以bash操作为主。很多Concept都与linux相关。docker的cli多数和bash以及gcc类似,如ps,rm, build, run, stop 等等

  • docker volume就很像简易版的LVM
  • docker compose和cmake的操作近似

第四件——区分Docker Daemon、Images和Container的三者关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JOxXFYVW-1627107012719)(https://docs.docker.com/engine/images/architecture.svg)]

建议参考git的原理

Creating a change set in Git

第五件——和学习Java一样多研究Reference

https://docs.docker.com/reference/

结论

Docker的上手难度低,之前浪费时间看书,现在有点后悔。虽然我已经在开发中使用Docker的Postgres和Memcached作为DB的容器, 但是真正要想玩转Docker,还是需要理解运维服务的一些技术。很多人都认为Docker是微服务,其实不是他只是微服务的载体。如果说Docker是进程,那么微服务就是函数。程序可以由多个函数组成,Docker也可以装入多个微服务。Docker的目的很简单——有效的利用资源和分配资源。但是我认为Docker存在对内存和CPU的依赖性,这会导致我们将来的计算机结构内存会更大,CPU核会更多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker的学习体验 的相关文章

随机推荐

  • systemverilog中的bind

    最早接触 bind 关键字是在assertion 当中 将assertion 与 dut 进行绑定连接 如下例子 bind cpu fpu props fpu rules 1 a b c cpu 是module 名字 fpu props 是
  • ElementUI表格的动态渲染

    在ElementUI官方文档中 描述的动态渲染只是单纯的将已知字段名称的JSON数据通过prop属性填充到页面中 下为官方文档内容
  • 轮播图背景图铺满整个div

    slider width 1224px height 458px background image url image school 1 png background size cover background repeat round p
  • Biogeochemical record of ancient humans (古人类生物地理化学记录)

    一 摘要 该文为一篇综述 全文主要介绍了如何利用生物化学记录 同位素 研究古人类饮食 营养和活动 二 作者简介 Marilyn Fogel born September 19 1952 is an American geo ecologis
  • Java程序中对Service进行Mock

    Java程序中对Service进行Mock 背景 Servie Test Service 背景 在项目中往往需要对service逻辑进行单元测试验证 这里采用mockito对dao数据进行模拟 验证service逻辑 Servie pack
  • 算法训练 大小写转换

    http lx lanqiao org problem page gpid T216 算法训练 大小写转换 时间限制 1 0s 内存限制 512 0MB 问题描述 编写一个程序 输入一个字符串 长度不超过20 然后把这个字符串内的每一个字符
  • 快速获得CNVD证书

    首先要明确什么样的通用漏洞可以发证书 收录标准 这里的收录标准是能获得证书的标准 事件型 事件型漏洞必须是三大运营商 移动 联通 电信 的中高危漏洞 或者党政机关 重要行业单位 科研院所 重要企事业单位 如 中央国有大型企业 部委直属事业单
  • maven子工程application文件失效

    按照如下进行操作
  • ubuntu下载goalng-1.9

    一 安装 这里以安装golang1 9为例 1 首先通过命令行直接安装 sudo apt get install golang 1 9 2 下载好之后 查看go的版本 catik catik Aspire V3 471 go version
  • 2023杭电暑假多校6 题解 1 2 6 10

    文章目录 1 Count 2 Pair Sum and Perfect Square https vjudge csgrandeur cn problem HDU 7337 6 Perfect square number https vju
  • C++中的拷贝构造函数

    1 拷贝构造函数 拷贝构造函数是一种特殊的构造函数 它在创建对象时 是使用同一类中之前创建的对象来初始化新创建的对象 拷贝构造函数通常用于 a 当用类的一个对象去初始化该类的另一个对象 或引用 时系统自动调用拷贝构造函数实现拷贝赋值 b 若
  • 微信小程序开发(二)微信小程序的调试和发布

    调试 编译和预览 预览 点击预览 可以使用微信扫描二维码 在手机上安装测试版小程序 或者点击自动预览 可以连接手机微信或者直接在电脑端打开小程序预览 发布 上传代码 发布项目 工具 上传 确定 编辑版本号和描述 点击上传 上传成功 点击下载
  • mysql错误代码1045的原因及解决方案、Mysql服务没找到?

    mysql错误代码1045的原因及解决方案 Mysql服务没找到 再一次接触数据库时 想要用工具连接数据库的时候 出现了错误 Acess denied for localhost 忘了 应该是服务器的问题 就去重启了一下服务器 net st
  • 【Ant Design of Vue】Tree 树形控件双击树节点禁止取消选中(两种方法)

    一 需求 Ant Design of Vue官网中 第一次点击树节点会选中 再一次点击该树节点会取消选中 如图所示 现有如下需求 根据左侧选中树节点 去请求接口获取右侧表格数据 第一次点击树节点则选中 再一次点击该树节点不会取消选中 不会取
  • 通过js date对象获取各种开始结束日期的示例

    有时候做一些任务计划的功能时候 需要提供一个开始时间或者结束时间 比如本周结束 本月结束 今天结束等等 因此 我参考网上的资料把相关的实现为一个项目 gitee https gitee com dhclly icedog date edge
  • 深度学习------tensorflow卷积神经网络:cifar数据集

    1 cifar10数据集介绍 CIFAR 10数据集由10个类的60000个32x32彩色图像组成 每个类有6000个图像 有50000个训练图像和10000个测试图像 数据集分为五个训练批次和一个测试批次 每个批次有10000个图像 测试
  • Dofbot机械臂从零部署笔记(4)——ROS之Moveit下实现实机逆向运动学规划

    文章目录 编译代码 逆向运动学规划例子 代码和运行效果 关于老是规划失败 逆向运动学Moveit编程步骤 代码修正 本节接上节 实现逆向运动学规划 本节源代码位于 home jetson dofbot ws src dofbot movei
  • linux重置电池阀值,Thinkpad在linux(ubuntu)下修改电池充电阈值,成功解决Thinkpad在Linux下的电池充电问题...

    安装tp smapi aptitude install tp smapi dkms modprobe tp smapi 更改充电阈值 设置开始充电阈值 如从 60 开始充电 echo 60 gt sys devices platform s
  • 手势虚拟键盘

    定义一个HandDetector类 import cv2 import mediapipe as mp import math class HandDetector Finds Hands using the mediapipe libra
  • Docker的学习体验

    由于兴致使然 便想学习一点Docker技术 于是 写了这篇学习Docker的体会 笔拙 见谅 第一件事 把网线插上 相信很多人都被官网的 Sample application 的docker build t getting started