启动容器

更新时间:
2023-07-17
下载文档

启动容器

启动命令说明

启动容器的命令如下:

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.ftpdEnablesylixos.network.telnetdEnablesylixos.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 为指定的协议类型,支持 tcpudp,当不指定 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 程序产生的标准错误。

文档内容是否对您有所帮助?
有帮助
没帮助