如何分发镜像

如何让他人使用你的镜像,一般通过Dockerfile,寄存服务器,docker load从归档文件安装。

镜像以及镜像库的命名方式

构建镜像的命名时候可以通过build指定,以及tag指定

  1. docker build imagename // 设置名字
  2. docker tag tagname imagename // 设置标签

dockerhub 寄存服务

类似github ,我们使用寄存服务管理自己的镜像,会对自己的镜像设置名字,版本

docker tag imagename:tag username/repositoryname:version

其中imagename ,imagetag是你构造的镜像的名字标签,username是你dockerhub的账号,repositoryname存放这个镜像的仓库名字,version版本

docker push username/repositoryname:version

等待推送完毕,在dockerhub上查看自己的镜像

自动构建

为自己的镜像配置自动构建,当推送任何代码修改,dockerhub就会构建镜像

私有分发

1.运行自己的寄存服务

官方有仓库的镜像,帮助用户设置自己的私有镜像registry,其构建步骤和使用寄存服务一样,只是需要运行register的服务,然后将推送目标推送至特地ip+端口(registry的启动的地址)

  1. docker -d -p 5000:5000 registry:2 这里使用2版,你也可以不用设置,取最新版本。
  2. docker tag imagename:tag ip+port(如果是本地可以使用localhost)/repostoryname:version

如何从远程自己的寄存服务器下载?

尽管在本地可以使用localhost/repostoryname:versionx下载,理论上讲localhost换成远程ip就可以访问,但是实际上操作会失败,docker守护程序会拒绝连接远程主机,因为缺少传输层安全的证书TLS
解决这个问题有以下几种办法:

  1. 对访问的寄存服务器的所有docker守护进程添加,简单但不是安全
  1. -- insecure-registry ip+port
  2. 然后重启docker守护进程
  1. 在主机安装可信的证书颁发机构签署的证书,一般要钱
  2. 在主机安装自签名的证书,如需要访问主机,需要安装一份自签名证书
  1. mkdir registry_certs
  2. 然后执行
  3. openssl req -newkey rsa:4096 -nodes -sha256
  4. -keyout registry_certs/domain.key -x509 -days 365
  5. -out registry_certs/domain.crt

缩减自己的镜像大小

目前镜像大小很难缩减,就能力而言,很难做到,但是在一些注意事项上,能避免添加无用镜像。

  • 镜像大小的构成
  • 首先,镜像大小的构成是由参与构建最终镜像的所有镜像的大小之和。
  1. imageSize = (image1+image2+image3)ing...
  2. docker build 一个镜像 他构建过程中有多的镜像层增加
  3. step1:构建一个生成文件f1的镜像层 size:30mb
  4. step2:删除文件f2,并且执行npm run dev size:50mb
  5. 。。
  6. 最后imagesize=30MB+50MB.
  7. 其中镜像大小并不会因为文件的删除而减小。
  8. 所以
  9. 所以
  10. 我们构建镜像的时候尽量将命令在一个镜像中操作。