容器技术,虚拟机,运维工具,快熟部署,环境移植,相关概念就不过多做介绍了,这里就稍微引用下:看这里或者自己搜索就好了。说说我开始使用docker的动机,除了它总是频率慢慢变高地出现在我的耳朵之外,还有自己拿到一台新机器(云虚拟机)时总是要先花些装一堆工具,当然,我也没拿到过很多机器,那么活用docker镜像似乎能帮助我稍微优化下工作。
docker还有很多很厉害的地方,这里就按照自己的学习认知一点一点的凿冰。
先看看自己是什么系统:
$ cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
$ cat /proc/version
Linux version 3.10.0-693.2.2.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Sep 12 22:26:13 UTC 2017
于是我便是直接参照这里来装的。
这个简单,直接来就好了:https://hub.docker.com/signup
需要注意的是这个docker账号名后面应该是后面自己上传image会经常要用到的。我这里叫antony314。
接下来的目标,先走通一波上传自己的常用镜像。
一般来说有两种方式,
这里用的是docker官方的centos镜像,在其上设置环境、安装工具、等等之后尝试作为自己的镜像:
由于走通之后才回来写的博客,进入容器后想看看容器里的文件系统有什么变化,df/du弄混了,文件出来了一大片,记录都弄没了。所以打算重新来一次补上命令和截图: 还经历了删除已有容器镜像的一点小插曲
这里是拉取镜像和进入容器,因为小插曲导致没法得到当时的样子了:
docker pull ..
docker run -t -i centos /bin/bash
这是进入容器内时查看df:
退出容器再查看df:
并不能看懂什么。
于是再次进入容器,结合上面小插曲下面其实是又重新run了一个容器,所以可以看到id是不同的:
随便做些环境:
[root@67a06fa62c7d /]# useradd release
[root@67a06fa62c7d /]# passwd release
[root@67a06fa62c7d /]# useradd release
[root@67a06fa62c7d /]# passwd release
python一般是系统自带的2.7,官方的centos应该比较纯净,没有python3:
[root@67a06fa62c7d ~]# python
Python 2.7.5 (default, Oct 30 2018, 23:45:53)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()
[root@67a06fa62c7d ~]# python3
bash: python3: command not found
由于经常使用python3,于是打算自己下载安装一个,找到官网最新版的python下载:
cd /root
mkdir tools
cd tools
[root@67a06fa62c7d tools]# wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
bash: wget: command not found
发现系统没有wget,于是先yum装一个:
[root@67a06fa62c7d tools]# yum -y install wget
至此,已经对系统做了些个性化,尝试将现在这个作为镜像上传吧,退出并提交镜像:
[root@67a06fa62c7d tools]# exit
exit
[root@小林のCentos 16:19:53 ~]>28$ docker commit -m="v1 update from of-centos" -a="antony" 67a06fa62c7d antony314/centos:v1
查看现在有的镜像:
可以看到没做多少改动,size居然变大了70多M,唯一装的wget也才是几百K的东西,这个疑问先放这里吧。不过这应该是容器的大小,image的话应该还有相应的压缩,印象中依赖的image以及最后上传的自定义image好像都是几十M。
准备push到docker hub:
被拒绝,想想中间果然是少了点什么,怎么确定权限是可以提交到hub的antony314的呢。于是查了下,是要先登录:
[root@小林のCentos 16:26:57 ~]>32$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: antony314
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
登录成功。可以看出docker和git的验证登录态的方式是不同的,docker可以直接在cli上登录。应该是由你的虚机上的cli和docker的系统常驻进程去hub做了登录验证和登录状态的保存到文件系统。颇有些浏览器的感觉,具体细节便暂不多做研究。
于是再次尝试push:
[root@小林のCentos 16:29:37 ~]>33$ docker push antony314/centos
The push refers to repository [docker.io/antony314/centos]
74f202b62733: Pushed
071d8bd76517: Mounted from library/centos
v1: digest: sha256:594645e9defd3dce5d2ad0254c0f3ae67fe9fd6af584e7b9ba8683a129df4004 size: 741
成功,登录hub 看到了自己的第一个镜像。至此,以上第一波docker操作结束。接下来在这个镜像的基础上再装些自己的常用软件形成自己的常用系统镜像。然后再保存到hub。
可以看出个人提交整个过程还是比较简单和便捷的。如果是组织账号,提供团队的运维部署功能的话,相应的就是复杂度更高的权限管理和验证啦。