容器
最后更新于:2022-04-01 00:52:00
在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
~~~