docker学习(12)—docker镜像/仓库管理

一、docker镜像分层结构
最底层是一个base层,也即是一个操作系统层。它还会从base一层层的叠加生成

二、什么是层层叠加?
例如,安装一个软件,它就会在base层的基础上追加一层。它的好处就是资源共享

三、加速器的配置
1、计算时间
time docker pull nginx

2、创建或修改/etc/docker/daemon.json
添加:

{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

3、重启docker服务
systemctl daemon-reload
systemctl restart docker

4、查看是否成功
docker info

四、dockerfile
1、一个dockerfile的配置

#1.基础镜像
FROM java:8
#2.维护者
MAINTAINER sys
#3.镜像的操作指令
#ADD拷贝一个文件到容器中
ADD eureka-server-0.0.1-SNAPSHOT.jar /data/app.jar
#告诉docker容器暴露端口,在容器启动的时候,需要通过-p做端口映射
EXPOSE 8761
#配置容器启动后,执行什么命令
ENTRYPOINT ["java","-jar","/data/app.jar"]

2、dockerfile是一个文本的配置文件,它可以快速创建自定义镜像
文本内容:包含了若干的命令行
文本格式:
基础镜像
维护者
操作指令
容器启动后指令

3、docker构建镜像
docker build -t registry-my/eureka-server:1.0.0 -f /appserver/dockerfile .
说明:
-t:对镜像进行命名,一般的命名法:仓库名字/镜像名字:版本号
-f:指定dockerfile文件

五、建设dockerhub官方仓库
1、什么是镜像仓库
存放镜像的地方

2、建设
登录https://hub.docker.com/
1)注册账号,登录创建仓库
2)本地linux登录docker login
3)改镜像的名字,因为docker官方镜像仓库是以用户名为仓库的
4)把镜像推到官方仓库,docker push xxxxxx

六、搭建本地仓库
1、为什么要搭建本地仓库?
1)节约带宽,因为如果用docker或阿里云官方的仓库走的互联网浪费带宽,而且慢
2)提供资源利用,因为是公司内部的镜像,推送到本地仓库更方便公司内部人员用,而且安全性高

2、获取仓库镜像文件
docker search registry
docker pull registry

3、创建一个仓库容器

docker run -itd -p 5000:5000 \
--restart=always \
--privileged=true \
--name=registry-my \
-v /date/volume/registry:/var/lib/registry \
registry

4、生成一个镜像
docker build -t registry-my/test:1.0.0 -f /root/dockerfile .
保证镜像的仓库名称和仓库容器一样

5、修改hosts
127.0.0.1 registry-my

6、改镜像名称
docker tag 7fdce394eb1d registry-my:5000/test:1.0.0

7、推送镜像到私有仓库
docker push registry-my:5000/test:1.0.0

8、查看仓库内容
curl -X GET http://127.0.0.1:5000/v2/_catalog
{"repositories":["test"]}

9、查看版本号
curl -X GET http://127.0.0.1:5000/v2/test/tags/list
{"name":"test","tags":["1.0.0"]}

10、删除本地镜像,从私有仓库拉取
docker rmi registry-my:5000/test:1.0.0
docker images
docker pull registry-my:5000/test:1.0.0
docker images