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

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 $MYPATHRUN yum -y install vim
RUN yum -y install net-toolsEXPOSE 80CMD 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.lryc.cn/news/466721.html

相关文章:

  • 投了15亿美元,芯片创新公司Ampere为何成了Oracle真爱?
  • vue 报告标题时间来自 elementUI的 el-date-picker 有开始时间和结束时间
  • 简单几何问题的通解
  • DBeaver导出数据表结构和数据,导入到另一个环境数据库进行数据更新
  • 【Golang】合理运用泛型,简化开发流程
  • OpenCV单目相机内参标定C++
  • 基于MATLAB(DCT DWT)
  • 渗透基础-rcube_webmail版本探测
  • linux下编译鸿蒙版boost库
  • 滚雪球学Redis[6.3讲]:Redis分布式锁的实战指南:从基础到Redlock算法
  • springboot二手汽车交易平台-计算机毕业设计源码82053
  • typescript 中的类型推断
  • linux 隐藏文件
  • 【网络协议栈】Tcp协议(上)结构的解析 和 Tcp中的滑动窗口(32位确认序号、32位序号、4位首部长度、6位标记位、16为窗口大小、16位紧急指针)
  • 手表玻璃盖板视觉贴合
  • 电信和互联网行业数据安全评估师CCRC-DSA人才强基计划
  • MQTTnet 4.3.7.1207 (最新版)使用体验,做成在线客服聊天功能,实现Cefsharp的物联的功能(如远程打开新网址)
  • 将java项目jar包打包成exe服务
  • Django请求响应对象
  • DevExpress中文教程 - 如何在静态SSR模式下使用Blazor Drawer组件?
  • 商汤科技十周年公布新战略,将无缝集成算力、模型及应用
  • 【如何获取股票数据07】Python、Java等多种主流语言实例演示获取股票行情api接口之沪深A股历史分时MA数据获取实例演示及接口API说明文档
  • Rust语法基础
  • AWS WAF实现API安全防护
  • vue将table转换为pdf导出
  • 20240818 字节跳动 笔试
  • 在Debian上安装向日葵
  • 13.2 Linux_网络编程_UNIX域套接字
  • 10.22 多进程间通信-共享内存、信号量集
  • 输入输出管理器的使用