当前位置: 首页 > article >正文

docker 发布镜像

如果要推广自己的软件,势必要自己制作 image 文件。

1 制作自己的 Docker 容器

基于 centos 镜像构建自己的 centos 镜像,可以在 centos 镜像基础上,安装相关的软件,之后进行构建新的镜像。

1.1 dockerfile 文件编写

首先,需要在项目的根目录下,新建一个文本文件.dockerignore,写入下面的内容:

.git

上面代码表示,这个路径要排除,不要打包进入 image 文件。如果没有路径要排除,这个文件可以不新建。

然后,在项目的根目录下,新建一个文本文件 dockerfile_test,写入下面的内容::

FROM centos
MAINTAINER oehuosi<oehuosi@foxmail.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools


EXPOSE 80

CMD echo $MYPATH
CMD echo "-----end-----"
CMD /bin/bash

说明:

  • FROM centos,该 image 文件继承官方的 centos,有标签的话,可以用:连接。Docker Hub中 99% 镜像都是从这个基础镜像过来的FROM scratch , 然后配置需要的软件和配置来进行的构建
  • RUN命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;CMD命令则是在容器启动后执行。另外,一个 Dockerfile 可以包含多个RUN命令生效,但是只有最后一个CMD命令生效。
  • 指定了CMD命令以后,docker container run命令就不能附加命令了(比如/bin/bash),否则它会覆盖CMD命令。
  • 官方的 centos 镜像不包含 vim,net-tools 等软件,这里是在官方的 centos 的基础上安装了 vim,net-tools,并构建新的镜像文件
1.2 构建镜像
# 命令: docker build -f dockerfile 文件路径 -t 镜像名:[tag] .
docker build -f dockerfile_test -t mycentos:0.1 .

出现Successfully tagged mycentos:0.1之后,即表示构建完成。

说明:

  • tag 可以不加,不加的话,默认就是 latest

启动容器,然后查看下:

doker run mycentos
pwd
# /usr/local

# 此时 vim 和 ifconfig 也都可以使用了

拿到一个镜像的时候,可以通过 history 命令查看这个镜像是怎么一步一步制作起来的。

docker history nginx
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
605c77e624dd   2 years ago   /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon…   0B
<missing>      2 years ago   /bin/sh -c #(nop)  STOPSIGNAL SIGQUIT           0B
<missing>      2 years ago   /bin/sh -c #(nop)  EXPOSE 80                    0B
<missing>      2 years ago   /bin/sh -c #(nop)  ENTRYPOINT ["/docker-entr…   0B
<missing>      2 years ago   /bin/sh -c #(nop) COPY file:09a214a3e07c919a…   4.61kB
<missing>      2 years ago   /bin/sh -c #(nop) COPY file:0fd5fca330dcd6a7…   1.04kB
<missing>      2 years ago   /bin/sh -c #(nop) COPY file:0b866ff3fc1ef5b0…   1.96kB
<missing>      2 years ago   /bin/sh -c #(nop) COPY file:65504f71f5855ca0…   1.2kB
<missing>      2 years ago   /bin/sh -c set -x     && addgroup --system -…   61.1MB
<missing>      2 years ago   /bin/sh -c #(nop)  ENV PKG_RELEASE=1~bullseye   0B
<missing>      2 years ago   /bin/sh -c #(nop)  ENV NJS_VERSION=0.7.1        0B
<missing>      2 years ago   /bin/sh -c #(nop)  ENV NGINX_VERSION=1.21.5     0B
<missing>      2 years ago   /bin/sh -c #(nop)  LABEL maintainer=NGINX Do…   0B
<missing>      2 years ago   /bin/sh -c #(nop)  CMD ["bash"]                 0B
<missing>      2 years ago   /bin/sh -c #(nop) ADD file:09675d11695f65c55…   80.4MB

2 注册账号

首先,去 hub.docker.com 或 cloud.docker.com 注册一个账户。然后登录。

# 查看登录命令帮助信息
docker login --help 

# Usage:  docker login [OPTIONS] [SERVER]

# Log in to a Docker registry.
# If no server is specified, the default is defined by the daemon.

# Options:
#   -p, --password string   Password
#       --password-stdin    Take the password from stdin
#   -u, --username string   Username

# 登录
docker login -u oehuosi

出现 Login Succeeded 即可表示登录成功了。

3 发布 docker 镜像

docker push mycentos
# 如果提示,那么去修改下镜像配置,给容器新增一个tag标签
docker tag 容器ID oehuosi/mycentos:0.1

# 再去重新提交
docker push oehuosi/mycentos:0.1
# 提交的时候也是一层一层的去进行提交的,我们等待片刻,即可push成功了。

# 如果还是push不上去,因为没有前缀的话默认是push到 官方的library
# 解决方法
# 第一种 build的时候添加dockerhub用户名,然后在push就可以放到自己的仓库了
docker build -t oehuosi/mycentos:0.1 .
# 第二种 使用docker tag #然后再次push
docker tag 容器id oehuosi/mycentos:0.1 
#然后再次push
docker push oehuosi/mycentos:0.1 
3.1 发布阿里云镜像服务上
  • 登录阿里云
  • 找到容器镜像服务
  • 创建命名空间
  • 创建容器镜像
  • 选择本地仓库

官网介绍:https://link.zhihu.com/?target=https%3A//cr.console.aliyun.com/repository/


http://www.kler.cn/news/363437.html

相关文章:

  • [Linux关键词]内建命令
  • 你还在使用存储过程吗?
  • 数字英文验证码识别 API 对接说明
  • Nginx可视化管理平台nginxWebUI(1)【保姆级部署方式】
  • 互联网摸鱼日报(2024-10-24)
  • 《使用Gin框架构建分布式应用》阅读笔记:p88-p100
  • springboot汉妆养生会馆网站-计算机毕业设计源码96229
  • 基于K8S的StatefulSet部署mysql主从
  • QGIS之三十二DEM地形导出三维模型gltf
  • 《嵌入式系统设计工程师-中级(Linux)》认证证书含金量如何?怎么考?
  • JavaScript 第24章:React 基础
  • Javascript算法(滑块窗口、螺旋矩阵)
  • Chainlit集成LlamaIndex和Chromadb实现RAG增强生成对话AI应用
  • 孤岛架构在安全性方面
  • 提升独立站排名?GPB外链才是王
  • 点云标注工具开发记录(五)之点云文件加载、视角转换
  • maven本地打jar包依赖
  • Spring事务的七种传播行为
  • AI带货主播如何打造真实视觉效果!
  • 机器学习—Logistic回归算法
  • 基于PHP考研互助系统【附源码】
  • Docker 部署 Jaeger
  • 【C++】讲师的五子棋版本改善之路
  • JS计算宝宝的年龄
  • [分享] SQL在线编辑工具(好用)
  • WebGL编程指南 - 入门续