Docker从入门到上手实战(2)

-it可以让你在启动后,连上容器的终端。连上终端后,就可以在里面随意操作容器里面的内容了。

Docker从入门到上手实战


exit退出容器后,容器就会自动停止了。但是这个容器依然还存在,只是”关机“了。(可以通过ctrl+p,ctrl+q,退出容器登入,而不关闭容器)

通过docker ps -a可以看到我们的容器已经Exited了。

Docker从入门到上手实战


Docker从入门到上手实战


通过docker start ${container_id},我们把这个容器再次启动。通过docker ps(加上-a包含显示未启动的容器),可以看到容器的状态为UP。

Docker从入门到上手实战


通过以上的基本操作,你基本可以利用docker当作一个虚拟机来使用了。如果想把容器和虚拟机的网络、存储打通,可以网上搜下了解下网络与卷挂载等容器设置。

更新镜像

在上面的例子中,我们pull下来的仅仅是一个ubuntu的原始镜像,并没有过多的内容。下面我们在这个镜像的容器里面,安装一个jdk。

Docker从入门到上手实战


这样我们的容器里面就有一个jdk了,但是如果我们再用这个ubuntu原始镜像再创建一个容器,它是不会用这个jdk的。所以我们就需要把这个容器的内容,提交到镜像当中。通过docker commit ${container_id} ${repository}:${tag},在本地将容器内容提交到镜像当中。然后就可以拥有一个带jdk的ubuntu镜像了。

Docker从入门到上手实战


后面我们就可以利用这个镜像,生成带jdk的容器了。以上的更新仅限于在本地的镜像,如果想把容器推送到云端就需要用docker push命令。前提是你已经登录了仓库拥有权限。

镜像仓库

上面提到,默认情况下,仓库是用Docker Hub。我们pull 和push都是在Docker hub上操作,但是如果镜像是内部私有使用的话,没有必要去使用Docker Hub,一个是网络慢,另一个是私有安全性问题。

针对以上问题,有两种解决方法,一个是自己搭建私有服务,另一个是用云服务的镜像管理平台(如阿里云的“容器镜像服务”)。前者对于一般开发者来说并没有必要,而且还要搞认证的,比较麻烦,这里不细说。下面介绍下如何用阿里云服务作为自己的私有仓库。

先在阿里云上创建一个镜像仓库,获得一个仓库地址,如registry.cn-shenzhen.aliyuncs.com/zackku/jdk。这里一个仓库地址,对应一种镜像(tag不同)。

利用docker login,先对阿里云的服务进行登录。

Docker从入门到上手实战


然后对上面的jdk镜像打tag(其实也是改仓库源的过程)

Docker从入门到上手实战


最后把镜像推送到阿里云就行了。

Docker从入门到上手实战


推送后,就能在阿里云的仓库上看到这个镜像。

Docker从入门到上手实战


通过搭建私有仓库,我们就可以完全抛开宿主机的环境,构建好一个镜像,就可以到处运行了。

Dockerfile构建镜像
从上面介绍,我们已经了解到,如何从拉取一个镜像、修改容器内容、提交镜像去构建一个我们所需要的镜像。但通过这些操作去构建一个镜像,一个是太繁琐,另一个问题是不清晰,没办法直观的了解镜像的构成。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12188.html