Is it possible to mount docker container on VS code? - docker

I saw it but I can't remember where I saw it.
It looked like seeing inside Linux, mounting the docker container on VS Code on Mac OS.
Is it possible to mount the docker container on VS code?

By "mount", I presume you're talking about opening VSCode inside the container instead of Docker volumes and bind mounts. You can install the Remote Containers extension to do this.
Also see the docs mentioned by #AttilaViniczai for how to create development containers/dev contianers for VSCode: https://code.visualstudio.com/docs/remote/create-dev-container
Install the VSCode extension
Select the Remote Explorer tab on the left side of VSCode and make sure you have Containers selected from the drop down menu.
Double click the container you want to work on and/or right click and select Attach to Container. This will attach VSCode to that Docker container and install its required tools inside automatically.
For more information about this, you can see the VSCode documentation here and a tutorial here.

Related

VSCode how to open a local folder within a local docker container.....without devcontainers.json?

I want start a docker container that I have created, and then mount a local folder to it in a way that doesn't make use of a devcontainers.json file. This is because I would like to test the same local repo out with multiple docker containers and editing the devcontainers.json file is a pain because I have to edit every time I want to change the docker image - where really I just want to do something like:
Dev Containers: Open Local Folder in Container
Choose Local Folder
Choose a docker container that is already running
The problem is that in step 3 I only see options to choose from pre-made base images i.e. Ubuntu 22.04. I can't see anywhere in the list any of my docker containers that I am running. Have I missed any functionality? Does what I'm asking exist......or must I use a devcontainers.json file?
If I correctly understood your issue:
Once you install Microsoft's Docker extension from the VS Code extensions' tab (ctrl + shift + x), you'll be able to do that.
This extensions have a "CONTAINERS" tab, where you can open another VSCode window inside a selected container's directory or attach a terminal to the container and manage the system.
Just right-click on the desired container and you'll see the options.

How to make VSCode run custom script when attaching to a running remote container

I have a running Docker container and would like to use the VSCode remote container plugin to attach to it.
Is it possible to have VSCode run a script when it attaches? Some custom actions are required to setup the container. These actions cannot be baked into the Dockerfile/Image.
Is it possible to configure the Docker exec arguments when attaching to a running container. (This is possible for Docker Run using .devcontainer when creating new containers, but I haven't found anything about Docker exec regarding already running containers).
There is a "postAttachCommand" that lets you execute a custom command after the vscode attached to the running container.
However my preference would be to use a login shell, for that there is an undocumented property called
"userEnvProbe": "loginInteractiveShell"
Below github issue explains this parameter (This is where i learnt about the parameter as well) :
https://github.com/microsoft/vscode-remote-release/issues/3585
The userEnvProbe and postAttachCommand is per docker container, you have to add them to "Container Configuration File", hover your mouse on the tip of the red arrow and you will see a settings icon, when you press it you can access to the "Container Configuration File"
For further customization there is a great github page that explains what else you can do to further customize the way you execute docker commands as well
https://github.com/microsoft/vscode-docker/issues/1596

How to view docker logs from vscode remote container?

I'm currently using vscode's remote containers extension with a .devcontainer.json file that points to my docker-compose.yml file.
Everything works fine and my docker-compose start command gets run (which launches a web server), but I haven't found a way to quickly see the logs from the web server. Has anyone found a way to view the docker log output automatically once vscode connects to the remote container?
I know as an alternative I could remove my container's start command and, after vscode connects, manually open a terminal and start the web server, but I'm hoping there's an easier way.
Thanks in advance!
I'm not using remote containers, just local once, so not sure if this applies but for locally running containers, you can go to the "Docker" tab (you need to install the official Microsoft Docker VS Code Plugin) where you can see your running containers. Just right-click on the container you want to see the logs for and select "View Logs":
You'll see a new "Task" appear in the Terminal pane that will show all your docker logs:
This question is really old and I'm not sure it this option was available at this time but just open the Command Palette (F1) and select/find "Remote-Containers: Show Log".
You see now the log of your container in the terminal.
You can open the command palette and search for: Remote Explorer: Focus on containers view. You should see a sidebar of containers, if you right click your container you can view logs.
I use VS Code's builtin terminal to see the live logs of the docker container that is connected with VS Code.
When VS Code is connected to the docker container, you can open the builtin terminal using the View > Terminal menu option. You should see an existing terminal labeled Dev Containers.
Maybe this is too late? But for others, this is how I do it.
First, instead of logging stuff to the stdout, I redirect all of the outputs into one single file and then using the tail command to steam the output to the terminal instead.
For example, I am going Go here:
logFile, err := os.OpenFile(logFileName, os.O_WRONLY|os.O_CREATE, 0755)
if err != nil {
log.Fatal("Fail to open the log file")
}
logrus.SetOutput(logFile)
Once that's done, I open up my terminal and run my the following command:
$ tail -f {logFileName}
That's one way to do it I guess, but I sure hope VSCode can come up with a better solution.
In the Remote Explorer tab you can see all your docker containers. Under "Dev Containers" is the container for the service specified in devcontainer.json; the rest are in "Other Containers." Simply right click on the container you're interested in and click "Show Container Log." You'll see the full output of the command for that service, just like in an interactive terminal - not a docker build log!
Note I am using a local development container and did not test with remote containers but I'm guessing it's the same.

Docker container doesn't run until I click "Enable volumes" in Kitematic

I recently created a docker-compose file here: https://github.com/ffMathy/Screeps.Server.Docker/blob/master/docker-compose.yml
I'm currently on Windows, but running Linux containers.
When I try to start up my containers using docker-compose up, they appear just fine. However, the screeps container doesn't show anything in the log, and doesn't start (I know this because I can't connect to its port).
Now, if I then click the volume via Kitematic (as shown in the screenshot) and click "Enable volumes" in the prompt that shows, the container restarts, and works - logs are also present in the preview as expected.
I don't understand how this can affect the container itself - that doesn't make much sense to me.
I'm having the same exact issue.
Downgrade Kitematic to 0.17.6 seems to fix the problem.
You can download it from here:
https://github.com/docker/kitematic/releases/tag/v0.17.6
I solved the problem by forcing the volume to mount to a relative path in my docker-compose.yml file.

open a file in docker container with vscode

I need to edit a file in a docker container. as no advanced ide inside the container,I wonder if vscode or some other ide can access into the container and let me edit files as outside the container.
With the May, 2nd 2019 announcement of "Remote Development with VS Code", you actually can use The Remote - Containers extension :
The Remote - Containers extension lets you use a Docker container as a full-featured development environment.
Containers make a great development environment because you can:
Develop with a consistent and easily reproducible toolchain and on the same operating system you are deploying to.
Quickly swap between different, isolated development environments and safely make updates without worrying about impacting your local machine.
Make it easy for new team members / contributors to get up and running in a consistent development environment.
Docker Workspace makes enabled to add folder inside a running docker container.
Docker extension for VS Code (ms-azuretools.vscode-docker) allows you to right-click on any running container in the list, then choose 'Attach Visual Studio Code' - and you will be able to open any folder inside Docker container in a new VS Code window. I presume you must have The Remote - Containers extensions installed as well.
Start the container by mapping the host path with container path using -v
docker run -v ~/yourlocalpath:/dockerpath
Changes you make on this folder will be reflected inside.

Resources