Science and technology

Use VS Code to develop in containers

Coding and testing inconsistencies are a danger when you have got a number of builders with completely different improvement environments engaged on a challenge. Visual Studio Code (VS Code) is an built-in improvement atmosphere (IDE) that may assist reduce these points. It could be mixed with containers to offer separate improvement environments for every software alongside a constant improvement atmosphere.

VS Code’s Remote – Containers extension lets you outline a container, use that definition to construct a container, and develop contained in the container. This container definition could be checked into the supply code repository together with the appliance code, which permits all builders to make use of the identical definition to construct and develop inside a container.

By default, the Remote – Containers extension makes use of Docker to construct and run the container, however it’s simple to make use of Podman for container runtimes, and it permits utilizing rootless containers.

This article walks you thru the setup to develop inside a rootless container utilizing Podman with VS Code and the Remote – Containers extension.

Initial configuration

Before persevering with, guarantee your Red Hat Enterprise Linux (RHEL) or Fedora workstation is up to date with the most recent errata and that VS Code and the Remote – Containers extension are put in. (See the VS Code website for extra info on putting in.)

Next, set up Podman and its supporting packages with a easy dnf set up command:

$ sudo dnf set up -y podman

After you put in Podman, configure VS Code to make use of the Podman executable (as an alternative of Docker) for interacting with the container. Within VS Code, navigate to File > Preferences > Settings and click on the > icon subsequent to Extensions. In the dropdown menu that seems, choose Remote – Containers, and scroll down to search out the Remote > Containers: Docker Path possibility. In the textual content field, exchange docker with podman.

Now that the configurations are performed, create and open a brand new folder or an present folder for the challenge in VS Code.

Define the container

This tutorial makes use of the instance of making a container for Python three improvement.

The Remote – Containers extension can add the required fundamental configuration recordsdata to the challenge folder. To add these recordsdata, open the Command Pallet by coming into Ctrl+Shift+P in your keyboard, seek for Remote-Containers: Add Development Container Configuration Files, and choose it.

In the subsequent pop-up, outline the kind of improvement atmosphere you need to arrange. For this instance configuration, seek for the Python three definition and choose it.

Next, choose the model of Python that will probably be used within the container. Select the three (default) possibility to make use of the most recent model.

The Python configuration may also set up Node.js, however for this instance, uncheck Install Node.js and click on OK.

It will create a .devcontainer folder containing recordsdata named devcontainer.json and Dockerfile. VS Code mechanically opens the devcontainer.json file as a way to customise it.

Enable rootless containers

In addition to the plain safety advantages, one of many different causes to run a container as rootless is that each one the recordsdata created within the challenge folder will probably be owned by the right person ID (UID) exterior the container. To run the event container as a rootless container, modify the devcontainer.json file by including the next traces to the top of it:

"workspaceMount": "source=$,target=/workspace,type=bind,Z",
"workspaceFolder": "/workspace",

"runArgs": ["--userns=keep-id"],
"containerUser": "vscode"

These choices inform VS Code to mount the Workspace with the correct SELinux context, create a person namespace that maps your UID and GID to the identical values contained in the container, and use vscode as your username contained in the container. The devcontainer.json file ought to appear like this (do not forget the commas on the finish of the traces, as indicated):

Now that you have arrange the container configuration, you possibly can construct the container and open the workspace inside it. Reopen the Command Palette (with Ctrl+Shift+P), and seek for Remote-Containers: Rebuild and Reopen in Container. Click on it, and VS Code will begin to construct the container. Now is a superb time to take a break (and get your favourite beverage), as constructing the container might take a number of minutes.

Once the container construct completes, the challenge will open contained in the container. Files created or edited throughout the container will probably be mirrored within the filesystem exterior the container with the correct person permissions utilized to the recordsdata. Now, you possibly can proceed with improvement throughout the container. VS Code may even deliver your SSH keys and Git configuration into the container in order that committing code will work identical to it does when enhancing exterior the container.

Next steps

Now that you have accomplished the essential setup and configuration, you possibly can additional improve the configuration’s usefulness. For instance:

  • Modify the Dockerfile to put in extra software program (e.g., required Python modules).
  • Use a custom-made container picture. For instance, for those who’re doing Ansible improvement, you may use Quay.io’s Ansible Toolset. (Be certain so as to add the vscode person to the container picture through the Dockerfile.)
  • Commit the recordsdata within the .devcontainer listing to the supply code repository in order that different builders can benefit from the container definition for his or her improvement efforts.

Developing inside a container helps forestall conflicts between completely different tasks by protecting the dependencies and code for every separate. You can use Podman to run containers in a rootless atmosphere that will increase safety. By combining VS Code, the Remote – Containers extension, and Podman, you possibly can simply arrange a constant atmosphere for a number of builders, lower setup time, and scale back bugs from variations in improvement environments in a safe trend.

Most Popular

To Top