最近公司在推动Devops,搞了几个镜像,现就把制作镜像的过程记录下来,分享给有需要的同学。由于我们前端开发是采用是Angular 技术,因此我们特意制作了一个NodeJS容器,用于编译Angular应用。
1. 创建Dockerfile
# base image
FROM daocloud.io/centos:7
USER root
RUN yum install git -y -q && yum clean all
ADD node-v12.16.2-linux-x64.tar.xz /home
ENV PATH=$PATH:/home/node-v12.16.2-linux-x64/bin
ENV TZ=Asia/Shanghai LANG=en_US.utf8
# 如果觉得 npm install 慢可以使用淘宝源
#RUN npm config set registry https://registry.npm.taobao.org
MAINTAINER Hexin Hou <hexin_hou@163.com>
2. 运行docker build 命令进行镜像制作
在Dockfile所在文件夹运行: docker build -t node-builder .
执行完毕后,可以通过docker images 查看创建的镜像,可到如下图名字为node-builder的镜像说明成功了。可以通过运行docker run -it node-builder 来去验证是否git 以及 node 已被正确安装上。
3. 保存镜像并上传到镜像仓库
1) 打个Tag: docker tag ddd921e18a19 xxxxx.com/nodejs-uat/nodejs-builder:1.0
2)登陆:docker login xxxxx.com
3) docker push xxxxx.com/nodejs-uat/nodejs-builder:1.0
中间遇到了很多坑,现总结一下:
坑:
1. 出现如下图所示的问题:error during connect....
可能的解决方案:'C:\Program Files\Docker\Docker\DockerCli.exe' -SwitchDaemon
2. image operating system "linux" cannot be used on this platform。
解决办法很简单,只需要在状态栏中鼠标右击小鲸鱼,然后选择Switch to Linux Containers
3. Docker login 时,出现Error response from daemon: Get https://xxxxxxx.com/v2/: x509: certificate signed by unknown authority
1) 解决方案,将该网站https://xxxxxxx.com加入到信任网站中,参考https://trevorsullivan.net/2016/08/09/docker-login-error-x509-certificate-signed-unknown-authority/
2) 配置docker 的 insecure-registries
以windows 为例进行配置: