您的位置:首页 > 运维架构 > Docker

Dockerfile和docker-compose.yml

2018-02-08 12:17 423 查看

Dockerfile

https://docs.docker.com/engine/reference/builder/

基本概念

Dockerfile
是一个包含用户会在命令行中执行组装出一个
image
所有命令的文本文件。

docker build
命令从一个指定的
Dockerfile
和执行该文件命令的上下文
Context
只能够构建出
image
. 一个Context可以是本地
PATH
或者远程GIT repository
URL
指向的一组文件。

从Dockerfile构建image

Dockerfile在Context root下

docker build .


指定某个路径上的Dockerfile

docker build -f /path/to/a/Dockerfile .


指定image tag

docker build -t shykes/myapp .

# tag the image into multiple repositories after build
docker build -t shykes/myapp:1.0.2 -t shykes/myapp:latest .


App、Service和docker-compose.yml

Services
实际上是”containers in production”. 一个App由多个不同的service组成。

docker-compose.yml
是一个YAML格式的文件,定义了生产环境(in production)中的Docker container行为,通过该文件对
services
定义、运行、扩容。

# run after swarm init
docker stack deploy -c docker-compose.yml <app-name/stack>
docker service ls # Get service ID
docker service ps <app-name>_<service-name>
docker stack ps <app-name/stack>
docker stack rm <app-name> # take down the app
docker swarm leave # take down the swarm on the worker
docker swarm leave --force # take down the swarm on the manager


Swarm cluster

Swarm: “Dockerized” cluster,一组运行Docker并被加入到一个Cluster中的机器。machine (物理的或虚拟的)加入swarm后才会变为该swarm的一个node.

# enable swarm mode and make current machine a swarm manager
docker swarm init

# execute on worker machine
docker swarm join

# levae node
docker swarm leave


利用Virtualbox虚拟机创建swarm,myvm1作为swarm manager,myvm2作为worker:

# create virtual machine2 with Virtualbox (Not on Win 10)
docker-machine create --driver virtualbox myvm1
docker-machine create --driver virtualbox myvm2

# check the status of machines, 连接上的机器后有一个*号asterisk
docker-machine ls

# restart a machine that's stopped, run
docker-machine start <machine-name>

docker-machine ssh myvm1 "docker swarm init --advertise-addr <myvm1 ip>"

# 查看swarm中的nodes状态
docker-machine ssh myvm1 "docker node ls"


配置当前shell与swarm manager中的Docker daemon通讯:

docker-machine env myvm1
eval $(docker-machine env myvm1)

# unsetting docker-machine shell variable settings
eval $(docker-machine env -u)


Stacks

一个Stack是一组相互关联的services,这组service共享依赖,可被安排在一起运行和扩展。

App根据复杂程度,可以使用a single stack或者multiple stacks.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: