在Shipyard中的一個容器就是一個簡單的Docker容器。容器可以部署在一個或多個引擎。
部署一個容器的時候,有下列選項可用:
## Name
這是Docker鏡像的名稱,例如,`shipyard/shipyard`
## CPUs
給容器分配的CPU數量
## Memory
給容器分配的內存(單位MB)
## Type
在Shipyard中,一個容器可以是這些類型:`service`,`unique`,或者?`host`。
`service`類型會使用主機標簽來調度容器。Shipyard只會在有這個標簽的引擎上運行容器。
`unique`類型的容器只會在所有引擎上運行一個實例。這有助于調度的高可用性。
`host`類型將會運行在特定的主機上。對于特定的主機,可以使用下列的語法來啟動:`--label host:`例如:`--label host:local`。這個容器就只會運行在引擎ID為:`local`的主機上。
## Hostname
容器的主機名
## Domain
容器的域名
## ENV
你可以指定多個?`--env`參數來給容器增加多個環境變量。使用`key=value`的格式。
## Arg
傳遞給容器的參數,使用`--arg`。同樣的可以多次使用。
## Label
調用要使用到的標簽
## Port
要暴露端口,使用下列語法:`--port /:`例如:`--port tcp/:8080 --port tcp/80:8080`。同樣的可以多次使用。
## Pull
將會從registry中獲取最新的鏡像。
## Count
可以指定容器實例在集群中的啟動數量。默認為1.
## 例子
### 發布一個容器
~~~
shipyard cli> shipyard run --name ehazlett/go-demo \
--cpus 0.1 \
--memory 32 \
--type service \
--hostname demo-test \
--domain local \
--env FOO=bar \
--label dev \
--pull
started 407e39dc1ccc on local
~~~
### 查看容器列表
~~~
shipyard cli> shipyard containers
ID Name Host Ports
407e39dc1ccc ehazlett/go-demo:latest local tcp/49166:8080
~~~
### 查看容器詳情
~~~
shipyard cli> shipyard inspect 407e3
{
"ports": [
{
"container_port": 8080,
"port": 49166,
"proto": "tcp"
}
],
"engine": {
"labels": [
"local",
"dev"
],
"memory": 2048,
"cpus": 4,
"addr": "http://10.1.2.3:2375",
"id": "local"
},
"image": {
"restart_policy": {},
"labels": [
"local"
],
"type": "service",
"hostname": "407e39dc1ccc",
"environment": {
"GOROOT": "/goroot",
"GOPATH": "/gopath"
},
"memory": 256,
"cpus": 0.08,
"name": "ehazlett/go-demo:latest"
},
"id": "407e39dc1cccc675591c86306563e78be6de085745427656ad1"
}
~~~
### 銷毀容器
~~~
shipyard cli> shipyard destroy 407e39
destroyed 407e39dc1ccc
~~~