这一章主要分享一下docker的常用指令。

如果觉得英文水平有限,推荐看菜鸟教程,简单实用,附上链接:http://www.runoob.com/docker/docker-tutorial.html

1,docker ps:该指令用于查看当前宿主机器运行的docker容器,


CONTAINER ID IMAGE COMMAND ... PORTS NAMES 09b93464c2f7 nginx:latest "nginx -g 'daemon off" ... 80/tcp, 443/tcp myrunoob 96f7f14e99ab mysql:5.6 "docker-entrypoint.sh" ... 0.0.0.0:3306->3306/tcp mymysql


其中比较关键的几个信息,如images是指运行该容器的原始镜像,可以避免人为失误导致的镜像使用上的错误。ports是指宿主机器上端口到容器内的端口映射,特别注意容器内的端口一般不会存在冲突,宿主机器上的端口不能重复。names是指当前运行的容器的名字,当然默认情况下启动容器不指定名称的话会默认有一个名字,但是不便于理解和记忆,所以在执行run命令的时候推荐加上--name  容器名称的方式来处理,即使上述中的names对应的名称。

2,docker logs containername :这个命令也比较常用,用于查看容器启动及运行中的日志信息,可以快速的帮助技术人员排查错误,通常情况下,生产环境我们需要通过提高日志级别的方式避免日志文件过大,造成宿主机器宕机或其他问题。

3,docker stop/rm :这两个指令通常一起使用,特别注意在使用docker run的时候一定要先执行stop和rm指令,不然会曝出已启动或名称冲突的错误。

4,docker build:通常我们接触最多的就是业务代码与依赖环境打包成镜像在运行,生成的镜像我们根据需要上传到不同的仓库,比如测试环境我们就可以上传打包好的镜像文件到内网私服,然后测试环境宿主机器执行pull指令下载镜像包后运行,也可以上传到公网(如阿里镜像仓库)发布生产环境中。

5,docker tag:这个指令其实可以理解是镜像文件重命名备份,如通过doker tag可以把192.168.11.11:88/demo/api:v1标记成baidu.com/demo/api:v1。

以上几个指令可以是日常使用中频率较高的几个,至于别的可以自行查阅相关资料使用。

特别注意:

有时候我们会经常遇到宿主机器上面的部分容器突然宕机或者不可用,造成的原因一般来说有如下几种情况:

1,依赖服务宕机,如redis,但是调用方没有容错机制,可以无限循环重试,造成cpu严重占用;

2,容器体量过大,犹如日志的级别太低,或者其他的文件在运行过程中不断占用硬件资源,造成容器宕机。

所以针对上面的情况我着重讲一下第二种,简单点可以通过设置相关参数限制启动的镜像大小,或者定时的清理日志,第三种比较规范的做法是利用docker-compse来管理镜像构建和相关参数设置。