compose 翻译成中文的意思是"构成"和"组成"的意思。Docker我以前把他比做一个大轮船,这个轮船上面能够放不少不少的箱子。这个箱子咱们能够看作是一个个的容器(container)。那么Docker-compose能够看到是就是把一个个箱子组合在一块儿成为一个大总体的意思。能够统一卸货,上货。放在咱们的应用中就是能够经过Docker-compose管理咱们容器(container)。这里只是一个通俗的比喻。理论至少能够参考Docker-compose官方文档 。node
docker-compose 是一个用来把 docker 自动化的东西,有了 docker-compose 你能够把全部繁复的 docker 操做简化成一条命令,自动化的完成。他有如下几个特色:git
实时的日志输出
使用docker-compose能够大大减小docker的部署时间。减小加班。比较有时间能够多多陪陪家人。github
#检查docker版本 sudo docker -v #检查Docker-compose的版本。 sudo docker-compose -v #安装Docker-compose命令。安装完成以后再次使用上面命令检查版本。 https://github.com/docker/compose/releases/download/1.6.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose #若是提示Permission denied。执行如下语句赋权 sudo chmod +x /usr/local/bin/docker-compose
#如下全部命令须要和d.yml在同一目录。也能够经过 -f 执行.yml文件 #查看当前容器运行的状态。显示容器名称|执行脚本|当前运行状态|当前监听端口信息。 指定.yml文件用法 sudo docker-compose -f ./docker-compose.yml ps sudo docker-compose ps #重启或者重启某个服务 sudo docker-compose restart ||sudo docker-compose xxxx sudo docker-compose restart #构建服务 sudo docker-compose build #显示日志 sudo docker-compose logs #-d表示后台。up命令会构建,(从新)建立,启动,连接一个服务相关的容器。默认状况下若是容器已经存在,将会中止并尝试从新建立他们。并使用以前挂载的卷。 # --no-recreate参数可让容器不被中止或者从新建立 sudo docker-compose up -d #stop和start中止当前运行的某个容器 sudo docker-compose stop xxxx sudo docker-compose start xxxx #中止全部容器,并删除容器 docker-compose down
docker-compose的配置文件是以.yml为后缀的。通常文件名默认为docker-compose.yml。固然也能够本身定义。首先咱们须要建立一个.yml文件,我这里仍是之前docke入门那个images为例。这里推荐一个插件。如何你用的是vscode的话,能够试试。地址 他能够很方便的帮咱们编写Dockerfile和docker-compose.yml文件。docker
mkdir docker-compose cd docker-compose touch docker-compose.yml vi docker-compose.yml
而后写入如下内容。npm
version: '2.1' services: docker_demo: image: docker_demo build: . environment: NODE_ENV: production ports: - 8000:3000
保存完成以后。在当前目录下面运行浏览器
#启动命令 robin:docker-compose robin$ sudo docker-compose up -d Recreating dockercompose_docker_demo_1 ... done #查看当前容器运行状态 robin:docker-compose robin$ sudo docker-compose ps Name Command State Ports ----------------------------------------------------------------------------------- dockercompose_docker_demo_1 /bin/sh -c npm start Up 0.0.0.0:9000->3000/tcp robin:docker-compose robin$ #显示logs robin:docker-compose robin$ sudo docker-compose logs Attaching to dockercompose_docker_demo_1 docker_demo_1 | docker_demo_1 | > docker_demo@0.1.0 start /usr/src/app docker_demo_1 | > node server.js docker_demo_1 | robin:docker-compose robin$
而后带来浏览器输入http://localhost:9000 就能够看到咱们熟悉的"Hello docker"。app
#版本 version: '2.1' #服务部门 services: #服务名称 docker_demo: #镜像名称或者images id 。若是本地不存在本身会下载 image: docker_demo #使用up命令启动时会执行构建任务。能够指向 Dockerfile 文件。 build: . #环境变量 environment: NODE_ENV: production #监听端口。对外暴露端口:容器内端口 ports: - 8000:3000
以上这个.yml的执行的结果和咱们以前使用 docker run -d -p 9000:3000 docker_demo
的效果一致。上面的docker-compose.yml比较简单。也没有用到volumes。只是用来入门。下篇会继续详细讲解docker-compose。tcp