今天是第一篇技术博客,主要讲的是docker安装以及docker的一些基本命令,除此之外,还会讲到swarm的新特性。
一、Docker的安装
Docker的安装有一些基本要求,Docker的相关书籍和网络上相关的知识都有比较详尽的介绍,我这边只介绍一点点体会。由于swarm特性的引进,利用dockerfile制作镜像时在不同docker版本里面会遇到一些小小的问题,这种情况下需要将docker升级到1.12.1之后才能制作具有swarm特性的镜像,这个时候需要对本地的docker进行升级。一般来说Debian系,和CentOS系没有国内的官方源,docker设定网络代理在没有FQ设备的情况下不能完成在线升级,这个时候就需要手动下载docker的镜像包。
这些包可以在docker的官网上手动下载,当然如果配置了国内的镜像中心或者本地的镜像中心,docker也能完成在线升级。
我一般在这个地方下载,它就是docker的官方源:
https://apt.dockerproject.org/repo/ ###这个是ubuntu的docker包库
https://yum.dockerproject.org/repo/ ###这个是centos的docker包库
在下载完成后,当然咯,得事先确认一下环境能否支持安装docker,这个地方照抄一下:
1.只支持64位的cpu架构计算机,还不支持32位
2.如果是在Linux上安装,建议内核版本3.10及以上,这个后面在docker背后内核知识相关处会补充说明;另外截止当前日期,docker已经支持了Windows、 OS X下的安装部署
3.如果是linux内核,需要开启cgroups和namespace功能,这两者至关重要,可以先mark一下
4.上面描述了docker对其他非linux操作系统的安装的支持,它有一个比较重要的前提是安装需使用Boot2Docker工具
这个时候开始紧张的安装大业了,如果环境上没有docker,那么直接安装好了,我曾在ubuntu和Redhat上分别安装过,只要分别执行dpkg -i 或rpm -ivh接包的名称即可。
但这不一定能保证安装成功,一个裸奔的Redhat还需要很多其他的依赖项,在执行手动安装过程中终端会提示打印有哪些依赖需要安装,如果不怕麻烦,那就一个个安装好了,如果想后面一劳永逸,那么就需要维护一个本地镜像源,ubuntu操作系统上也是类似的,但是貌似依赖比较少,没有裸奔的Redhat依赖项多。
另一方面,如果环境上已经安装了docker的某个版本,直接执行安装是会报错的,需要将旧版本卸载掉,冲突项也会在终端中打印出来,只需执行apt-get remove 或者 yum uninstall即可。
由于写博客的时候是在Windows下操作的,对于其中的一些细节不能提供截图描述,请谅解。但毫无疑问的是,安装或升级的过程是一个体力活,花点时间就好了,聪明的伙伴们可能早早准备好了镜像源,无需耗费更多精力在找各种依赖包上面。
二、Docker的一些基本命令
实际上,安装好docker之后,在root权限下执行 docker,下面就有一系列的指令参考打印出来。
关于docker,我常用的是这几项:
docker run:启动容器,这个命令后面有很多有意思的附加参数,一般来说我会挂载卷、指定容器名字、必要的时候指定网络、还有使用的镜像名字
docker exec -it 容器名 bash 或sh:bash或sh和容器内部的os相关,这命令意思是进入容器内部,可以在容器内部做一系列的调试
docker stop 容器名 和docker rm 容器名: 顾名思义,意思就是停止容器和清理容器
docker ps 和docker ps -a:用来显示所有存活的容器以及显示所有容器,包括之前消亡的容器
docker inspect容器: 实际上可以用来检视docker run里面的一些参数配置,还有资源(内存、网络、cpu等等)相关的信息
docker --version:就是查看docker的版本
docker info: 这个也尝用到,具体的它和daemon.json文件相挂钩,现在不必了解这个是什么文件,只需要知道一个直观的作用是可以看到docker client和server上的一些信息,比较有用的是docker info里面可以看到debug模式是否打开等等
docker logs 容器ID:可以看到容器相关的日志,一般来说,大部分日志描述的是容器内部守护进程的启动信息
与此相关的还有一些其他命令,我并不常用,但也不可忽视,一个就是docker build,用来制作镜像,docker commit就是提交镜像的修改,docker load -i 以及docker save -o就是加载本地的docker镜像或保存docker images展示的镜像,可能还包括,docker rmi用来删除镜像,这个话题就此打住,防止越说越远,有一些命令只是偶尔用一下。
另外一个就是1.12.1之后的新特性,swarm功能的上线带来了一些新的指令,其中最为显著的就是
docker service开头的指令,在界面输入之后会有一些提示,我常用这些
docker service create: 创建服务,可以选择replication模式或global模式,以及挂载卷、启动镜像、网络
docker service ls:展示所有服务,这些服务有些是replication模式的,有的是global模式的,在ls后可以看到相关的标注
docker service ps:展示某个服务的状态,一般情况下可以看出容器的真实状态或者错误原因
docker service inspect: 和docker inspect很像,也是展示docker service create里面的配置参数
docker service update:是用来滚动升级的,几乎无延迟
docker node开头的则是swarm模式下对node信息的描述,由于此处过早地引入了swarm,指令对大家来说没有相关的背景,其实没有必要了解。
大多数情况下,都是学以致用嘛。那么回顾一下今天的重点,docker的安装和升级。但是这块内容没有实操截图,有点尴尬。