logo

nsc expose container

Expose an exported port on a running container.

expose container opens a public ingress to an exported port on a running container. The provided container needs to be up and running. For example, it can be started in advance using docker run within an ephemeral instance. The exposed endpoint is encrypted with TLS and secured with Namespace authentication, so whoever has access to the workspace where the ephemeral environment was created in, will also have access to the endpoint.

Currently, it is possible to expose only HTTP services.

Usage

nsc expose container <instance-id> --container <name> [--container_port <port[,port]>] [--name <ingress-name>] [--source <docker|containerd>] [--output <plain|json>]

Example

In the example below we first create an ephemeral instance, then SSH into the instance, start the nginx container with docker run and then expose it using nsc expose container.

Create an ephemeral instance:

$ nsc create
Created instance "oiepencpc41im"
 deadline: 2023-04-25T09:46:03Z

SSH into the created instance:

$ nsc ssh oiepencpc41im

and start nginx container within the created instance:

oiepencpc41im:~# docker run --name nginx-foobar -p 80:80 -d nginx

Afterwards expose port 80 using the nsc expose container command:

$ nsc expose container oiepencpc41im --container nginx-foobar --container_port 80
Exported port 80 from nginx-foobar (20e97bc453c936a9665dd6ce75e0168c92a689cc92214303a87fc19a):
  https://nginx-foobar-j239700-oiepencpc41im.fra1.namespaced.app

Now you can visit the provided URL https://nginx-foobar-j239700-oiepencpc41im.fra1.namespaced.app in your browser and use your Namespace credentials for authentication.

Options

--container <name>

To specify a name of a container to expose. This option is required.

--container_port <port[,port]>

Exports the specified ports (separated by commas) as public ingresses. If the option is not provided, all the exported ports would be exposed.

--name <name>

Set the name of the exposed ingress. Setting a name is only permitted when exposing a single port. By default, ingress names will be generated by Namespace.

--source <source>

To specify the container runtime which was used to run the container. Supported options are docker and containerd. By default docker is used to lookup running containers.

-o <type>

Specifies the output format. Supported options are json and plain. By default plain output format is used.

--all

Export one ingress for each exported port of each running container.

--wildcard

If set, generate a wildcard ingress for the exposed container port. Can only be used when exposing a single port.