渣渣前端的Docker学习之路

388 阅读2分钟

该学习之路一直以【centos:centos7】为基础镜像,如过程发现逻辑漏洞,望指教

macbookProM1遇到的问题

执行 npm run -itd centos:centos7 时有WARNING

执行命令::cc@ccdeMacBook-Pro docker % docker run -itd centos:centos7

WARNING:WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested

其实启动时系统已经把WARNING相关的关键字告诉你了,但是IMAGE还是能正常启动的,所以我们可能会忽略这句提示,直到 ⬇️ ⬇️ ⬇️ ⬇️

执行 yum install git 的时候报错

http://mirror.centos.org/centos/7/os/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 502 - Bad Gateway
http://mirror.centos.org/centos/7/os/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 502 - Bad Gateway
https://download.cf.centos.org/centos/7/os/x86_64/repodata/repomd.xml: [Errno 14] curl#35 - "Encountered end of file
failure: repodata/repomd.xml from base: [Errno 256] No more mirrors to try.
http://mirror.centos.org/centos/7/os/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 502 - Bad Gateway
https://download.cf.centos.org/centos/7/os/x86_64/repodata/repomd.xml: [Errno 14] curl#35 - "Encountered end of file

image.png

思考思路:只是在一个很纯净的centos7镜像里去执行一句yum install git命令而已,但却报了404的错误。

yum源问题 ❌

因为国内外的网络因素,所以我第一想法就是yum源问题,所以就一切以centos7 yum切换源为关键字去找google找答案。 以下是找到【切换yum源】的方法: ⬇️ ⬇️ ⬇️ ⬇️

# 下载软件的时候先切换成阿里源或者网易源:
# 先备份后下载
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

# 参考:

<https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11t56bHS>
<https://www.fyyidc.com/news/content/13.html>
镜像问题 ❌

docker hub里找centos7镜像,结果如下 ⬇️ ⬇️ ⬇️ ⬇️

image.png

执行docker pull arm64v8/centos:7

重新启动docker run -itd arm64v8/centos:7,发现RUN的时候不会报platform错误了

但是启动完后执行yum install git还是报错

image.png

查看/etc/yum.repos.d/CentOS-Base.repo

[base]

name=CentOS-$releasever - Base - mirrors.aliyun.com

failovermethod=priority

baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/

        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/

        http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/

$releasever = 7 ✅

$basearch = aarch64 ❌

所以链接还是报404/502了

第三想法,架构问题 ✅

一开始执行RUN命令时就已经有WARNING了,所以尝试通过另外一种方式RUN

依次执行:

`
docker run -itd --platform linux/amd64 centos:centos7`
docker ps
docker exec -it _containerId /bin/bash
// 切换yum源。先备份后下载
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

yum install git 
  

一切执行成功,通过

docker QA整合

如果不想在本地搭建dev环境,能不能在docker里面配置好开发环境,暴露端口出来做dev环境?

如何打包一个比较小的node SSR服务去部署?

Docker平滑部署,简单版如何实现?

Dockerfile?