Networking

Exposing Container Ports

By default, container ports are not accessible outside of Docker. Other containers can work with them, but you can’t access them from your host.

$ fin ps
     Name                   Command               State        Ports
--------------------------------------------------------------------------
netscout_cli_1   /opt/startup.sh gosu root  ...   Up      22/tcp, 9000/tcp
netscout_db_1    /entrypoint.sh mysqld            Up      3306/tcp
netscout_web_1   /opt/startup.sh apache2 -D ...   Up      443/tcp, 80/tcp

The container ports in the right column are exposed to Docker. Follow the steps below to expose any of these ports to the host.

1. Create docksal-local.yml.

This is recommended for creating local overrides instead of modifying docksal.yml directly.

2. Put the following contents into docksal-local.yml.

This will instruct Docker to export port 22 of the cli service as port 2222 on your host.

version: "2.1"

services:
  cli:
    ports:
      - "2222:22"

Note the quotes. Yaml interprets some numbers with a colon as base64 numbers, so you need quotes here.

3. Run fin project start to apply the new configuration.

4. Confirm that your port is exposed.

Note: 0.0.0.0:2222 is pointing to 22.

$ fin ps
     Name                   Command               State            Ports
---------------------------------------------------------------------------------
netscout_cli_1   /opt/startup.sh gosu root  ...   Up      0.0.0.0:2222->22/tcp, 9000/tcp
netscout_db_1    /entrypoint.sh mysqld            Up      3306/tcp
netscout_web_1   /opt/startup.sh apache2 -D ...   Up      443/tcp, 80/tcp

5. Accessing exposed port

To access the exposed port use dedicated Docksal IP 192.168.64.100, not localhost. I.e. in the example above access 192.168.64.100:2222.