一、镜像
Docker可以把我们的应用打包成一个可移植的镜像,也可以拉取打包好的镜像来共自己使用,那么也会存在一个存放docker镜像的仓库。一个官方的镜像仓库地址[https://hub.docker.com/],我们可以注册相应的账户就可以登录使用。(https://hub.docker.com/),此时,我们也可以使用阿里云的镜像仓库。
本文,将分别介绍镜像仓库的设置、镜像的拉取、镜像删除、镜像修改、镜像的制作以及发布镜像到远程仓库。
二、镜像仓库设置
docker安装的时候,会默认配置官方的镜像仓库,如果我们想修改成阿里云的又应该怎么做呢?比如我们想添加某一个镜像仓库,此时我们只需要在"/etc/docker"目录下创建一个daemon.json文件,并在文件中写入如下,并只需吧${registry-mirrors}替换成对应的仓库地址就行:
{
"registry-mirrors": ["https://${registry-mirrors}"]
}
配置完成之后,重启docker就可以,并可以通过docker info命令查看当前镜像仓库是否添加成功,如果我们想删除,某个镜像仓库,那么只需要编辑daemon.json这个文件即可,如果不想用第三方的在,直接删除这个文件,然后重启docker就可以使用默认的镜像仓库。
如果想搭建一个自己的仓库,可以采用docker的Harbor工具进行,详细过程就不做进一步了解。
三、镜像拉取
镜像拉取可以通过docker pull命令来操作
- 简单拉取:docker pull image
- 带版本拉取:docker pull image:version
- 带tag拉取:docker pull image:tag
- 带digest拉取:先要获得镜像的digest,在执行docker pull image@digest
- 拉取全部:docker pull -a images
拉取完镜像之后我们可以通过docker images来查看当前拉取下来的镜像
如第一节中拉取的hello-world镜像:
- REPOSITORY:镜像名
- TAG:当前标签
- IMAGE ID:镜像编号
- CREATED:镜像创建时间
- SIZE:镜像大小
四、镜像删除
镜像的删除可以使用docker rmi命令,这个命令很简单就不做介绍
五、镜像名修改
可以通过docker tag命令进行操作,比如把我们当期的hello-world镜像修改成hello。
此时,我们可以删除原来的镜像,并运行更名之后的镜像
六、镜像制作
镜像的制作,就是如何把自己的应用打包成一个镜像的过程,这里我们准备了一个简单springboot项目。
并打包成了一个jar文件,上传到了我们的物理机器上,根据官网的介绍,我们打包一个image需要先创建一个Dockerfile文件(具体怎么编写Dockerfile文件,后续再学学),我把jar文件和新建的Dockerfile文件放在了/root/image目录下。
Dockerfile内容如下:
FROM openjdk:8
LABEL author="cainiao1024"
COPY docker-1.0.jar my-sp-docker.jar
CMD ["java","-jar","my-sp-docker.jar"]
此时我们可以运行:docker build -t my-sp-docker .命令来打包应用
通过docker images可以查看到当前的镜像已经打包成功
我们再来运行当前镜像:docker run -d --name mydocker -p 8080:8080 my-sp-docker
此时通过docker ps命令可以查看当前启动是否成功
此时我们就可以通过物理主机去访问当前应用:http://ip:8080/docker
至此,镜像创建成功。
七、发布镜像到远程仓库
在第六部分我们已经创建好自己的镜像了,想要发布到远程上,可以使用docker push命令操作,此时我们需要通过docker login命令来登录到我们所在的镜像仓库,然后通过docker push 命令来推送当期的镜像到仓库中,此时需要注意,镜像应该按照"用户名/镜像名",方式进行推送,不然会失败(也就是推送到具体的用户名下,需要注意把当前的镜像名打标签成"用户名/镜像名")
此时我们登录到远程仓库发现已经推送成功
此时,我们可以从远程仓库拉取自定义镜像:docker pull solayang/my-sp-docker:latest
八、总结
本文从镜像的完整生命周期进行了一个初步介绍,后续将更深入的学习Docker相关知识。
以上,有任何不对的地方请指正,谢谢!