如何分发镜像
如何让他人使用你的镜像,一般通过Dockerfile,寄存服务器,docker load从归档文件安装。
镜像以及镜像库的命名方式
构建镜像的命名时候可以通过build指定,以及tag指定
- docker build imagename // 设置名字
- 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的启动的地址)
docker -d -p 5000:5000 registry:2 这里使用2版,你也可以不用设置,取最新版本。
docker tag imagename:tag ip+port(如果是本地可以使用localhost)/repostoryname:version
如何从远程自己的寄存服务器下载?
尽管在本地可以使用localhost/repostoryname:versionx下载,理论上讲localhost换成远程ip就可以访问,但是实际上操作会失败,docker守护程序会拒绝连接远程主机,因为缺少传输层安全的证书TLS
解决这个问题有以下几种办法:
- 对访问的寄存服务器的所有docker守护进程添加,简单但不是安全
-- insecure-registry ip+port
然后重启docker守护进程
- 在主机安装可信的证书颁发机构签署的证书,一般要钱
- 在主机安装自签名的证书,如需要访问主机,需要安装一份自签名证书
mkdir registry_certs
然后执行
openssl req -newkey rsa:4096 -nodes -sha256
-keyout registry_certs/domain.key -x509 -days 365
-out registry_certs/domain.crt
缩减自己的镜像大小
目前镜像大小很难缩减,就能力而言,很难做到,但是在一些注意事项上,能避免添加无用镜像。
- 镜像大小的构成
- 首先,镜像大小的构成是由参与构建最终镜像的所有镜像的大小之和。
imageSize = (image1+image2+image3)ing...
docker build 一个镜像 他构建过程中有多的镜像层增加
step1:构建一个生成文件f1的镜像层 size:30mb
step2:删除文件f2,并且执行npm run dev size:50mb
。。
最后imagesize=30MB+50MB.
其中镜像大小并不会因为文件的删除而减小。
所以
所以
我们构建镜像的时候尽量将命令在一个镜像中操作。