启动容器
启动命令说明
启动容器的命令如下:
ecs start id [--env A=B] [--stdin /dev/xxx]
[--stdout /dev/yyy] [--stderr /dev/zzz/] [--config config_tmp.json] [--network mode] [--port host_port:container_port[/proto]] [command arg ...]
启动命令的参数说明如下:
id
为容器的 ID 号。
该命令支持的扩展选项如下:
--env
为启动容器时临时指定的环境变量,--env
也可以写为-e
。
该配置项的参数应为 A=B
的键值对,A
为环境变量名,B
为环境变量值;
若容器已默认设置同名的环境变量,则以此时临时指定的环境变量为准。
容器启动时,若其容器配置文件 config.json 中使能了配置项 sylixos.network.ftpdEnable
、 sylixos.network.telnetdEnable
和 sylixos.network.sshdEnable
,则系统会随机分配 FTPD、TELNETD和 SSHD 的端口,可以参考如下命令进行设置。
[root@sylixos:/root]# ecs start ecs_demo --env FTPD_PORT=121 --env TELNETD_PORT=123 --env SSHD_PORT=122
--stdin
为启动容器时临时指定标准输入设备。若不指定,则为系统标准输入。--stdout
为启动容器时临时指定标准输出设备。若不指定,则为系统标准输出。--stderr
为启动容器时临时指定标准错误文件,若不指定,则为系统标准错误。--config
为启动容器时临时指定的配置文件路径,该路径对应的配置文件应满足 ECS 配置文件格式。--config
也可以写为-c
。--network
为启动容器时指定的网卡工作模式。网卡的工作模式包括:none
表示只支持本地回环,此种工作模式下容器不具有对外网络通信的能力;host
表示与宿主环境共享网卡的功能,其为容器网卡的默认工作模式;private
表示建立容器虚拟网卡,对网络资源进行隔离的工作模式。--network
也可以写为-net
。
--port host_port:container_port[/proto]
为启动容器时当容器工作在 private 模式时,对端口进行映射。 其中host_port
为宿主环境的端口;container_port
为容器内的端口;proto
为指定的协议类型,支持tcp
和udp
,当不指定 proto 时,表示同时映射 tcp 和 udp 端口。--port
也可以写为-p
。command arg ...
为启动容器时临时指定的程序及其参数。
配置优先说明
以上临时配置文件、临时环境变量与临时命令三项参数存在加载顺序的优先关系,其加载顺序依次为: 临时配置文件
、临时环境变量
、临时命令
。
即临时命令会替代临时配置文件中的默认命令,命令行指定的环境变量和启动命令会覆盖临时配置文件中的内容。
启动范例
执行以下命令得到已注册的容器范例:
[root@sylixos:/root]# ecs create /apps/ecs_demo ecs_demo
ecs 命令查看已注册的容器范例,如下图所示。
arg 参数示例
如使用启动命令启动已注册的容器范例,同时运行容器内根文件系统中的 /apps/helloworld 程序,可执行如下命令:
[root@sylixos:/root]# ecs start ecs_demo /apps/helloworld
容器启动后可以看到如下图所示的输出,图中“Hello SylixOS!”和“Hello VSOA! Version 1.3.0”为 helloworld 程序输出,ecs 命令可查看容器状态。
env 参数示例
如使用启动命令启动已注册的容器范例,并指定 FTPD 和 TELNETD 的端口,并启动容器内的 helloworld 程序,可执行如下命令:
[root@sylixos:/root]# ecs start ecs_demo --env FTPD_PORT=121 --env TELNETD_PORT=123 --env SSHD_PORT=122 /apps/helloworld
容器范例启动后可以看到如下图所示的输出,ecs 命令可查看容器状态。
config 参数示例
如使用启动命令启动已注册的容器范例,并在临时配置文件(/apps/config_tmp.json)中加上启动参数("args": ["/apps/helloworld"])来启动容器内的 helloworld 程序,可执行如下命令:
[root@sylixos:/root]# ecs start ecs_demo --config /apps/config_tmp.json
容器范例启动后可以看到如下图所示的输出,ecs 命令可查看容器状态。
network 参数示例
如使用启动命令启动已注册的容器范例,并使容器只支持本地回环,可执行如下命令:
[root@sylixos:/root]# ecs start ecs_demo --network none
容器范例启动后可以看到如下图所示的输出,ecs attach id 进入容器 shell 终端,然后 ifconfig 可查看到容器中只有一个本地回环网卡设备。
如使用启动命令启动已注册的容器范例,并使容器与宿主机共享网卡功能,可执行如下命令:
[root@sylixos:/root]# ecs start ecs_demo --network host
容器范例启动后可以看到如下图所示的输出,且容器中的网卡设备同宿主机一致。
如使用启动命令启动已注册的容器范例,并使容器建立虚拟网卡,可执行如下命令:
[root@sylixos:/root]# ecs start ecs_demo --network private
容器范例启动后可以看到如下图所示的输出,且容器中只有一个虚拟出来的网卡设备。
port 参数示例
如使用启动命令启动已注册的容器范例,并为启动容器设置端口映射,可执行如下命令:
[root@sylixos:/root]# ecs start ecs_demo --network private --port 8080:80 --port 8100:100/udp
容器范例启动后可以看到如下图所示的输出,ecs port id 可查看容器端口映射情况,ecs 命令可查看容器状态。
stdout 参数示例
如使用启动命令启动已注册的容器范例,并为启动容器时临时指定标准输入设备,可执行如下命令:
[root@sylixos:/apps]# ecs start ecs_demo --stdout /apps/out.txt
容器范例启动后可以看到如下图所示的输出,ecs 命令可查看容器状态,从 out.txt 可查看到容器启动的日志。
stderr 参数示例
如使用启动命令启动已注册的容器范例,并为启动容器时临时指定标准错误文件,可执行如下命令:
[root@sylixos:/apps]# ecs start ecs_demo --stderr /apps/err.txt
容器范例启动后可以看到如下图所示的输出,ecs 命令可查看容器状态,进入容器执行 ./hello 程序产生标准错误,从 err.txt 可查看到 hello 程序产生的标准错误。