经过前面几篇入门docker操作,希望你大致已掌握docker的使用,剩下的提高方法主要是多将自己开发的应用部署到docker上,进一步提高熟练掌握docker,docker是当下半自动化运维和自动化运维的主要技能之一,也是效能平台如K8s等的使用基础。
一、docker-compose(https://github.com/docker/compose)
Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用和容器依赖,然后使用一条命令来启动你的应用,完成一切准备工作。 Docker Compose是用python写的,安装时,需要使用python 的pip管理安装。我们都知道maven 之于java,Docker Compose其实就是docker的maven工具,你将自己的制作的镜像上传到docker hub等公有云或者私有云上后,就能在客户端通过compose来操作部署你的镜像到自己服务器上。
Docker Compose默认的配置文件是docker-compose.yml,下面我们以携程开源分布式配置项目Apollo(https://github.com/ctripcorp/apollo)的docker-compose来讲解:
如上图所示,apollo项目的docker-compose部署脚本就是这么简洁,services下定义了该部署共需要3个镜像,depends_on指明了它们之间的部署顺序关系,links指明了 apollo-quick-start 镜像需要apollo-db服务,ports是服务器端口到容器端口的映射. 在上诉文件夹下执行docker-compose up -d命令(docker-compose 默认文件是docker-compose.yml,可以在执行命令时用 -f 指定其它名字,-d选项是让命令在后台运行),第一次执行时,会将依赖的镜像文件安装到docker中,下载安装完后,部署的应用就在8080端口和8070端口上运行了。
此时用docker-compose ps可以查看docker中的在运行应用,比较详细的docker-compose命令有如下这些:
build构建或重建服务
help命令帮助
kill杀掉容器
logs显示容器的输出内容
port打印绑定的开放端口
ps显示容器
pull拉取服务镜像
restart重启服务
rm删除停止的容器
run运行一个一次性命令
scale设置服务的容器数目
start开启服务
stop停止服务
up创建并启动容器
更多的docker-compose命令,可以在自己不断实践中熟练掌握
二、docker常用命令
docker run在一个新的容器执行一个命令
docker start开一个或者更多已经停止的容器
docker stop停止一个运行的容器
docker restart重新开始一个运行的容器
docker kill杀死一个运行的容器
docker rm删除一个或更多的容器
docker pause暂停一个容器的所有进程
docker unpaunse恢复一个容器的所有进程
docker容器操作运维
docker ps列出容器
docker inspect列出关于容器或镜像的底层信息
docker top显示一个容器运行的进程
docker attach附上一个运行的容器
docker events得到实时的来自服务的事件
docker log获得一个容器的日志
docker wait阻塞直到一个容器停止,然后打印它的退出代码
docker export导出一个容器的文件系统作为一个tar文件
docker port列出容器映射的端口
docker版本管理
docker commit创建一个新的镜像从一个容器
docker cp从容器复制一个文件或目录到本地目录或标准输出
docker diff展示一个容器文件系统的变化
docker镜像仓库
docker login登入仓库
docker pull拉取镜像
docker push推送镜像
docker search搜索镜像
docker本地镜像管理
docker images列出本地的镜像
docker rmi删除本地的镜像
docker tag打标签本地的镜像
docker build通过Dockerfile构建本地的镜像
docker histroy列出镜像的历史
docker save保存本地的镜像为一个tar文件
docker import通过tar导入镜像
docker load加载tar镜像
docker其它命令
docker info
docker version
上面是docker使用的常用基本命令,平时用时供备查,到此docker的基础入门章节已告段落,后续我我会陆续写docker的高级使用场景。
参考:
1.http://dockone.io/article/834
2.http://wiki.jikexueyuan.com/project/docker-technology-and-combat/commands.html
3.https://www.jianshu.com/p/711bc4ffcecf