Parsa Noori
Parsa Noori

Reputation: 338

How to use docker from the machine on the gitlab docker container?

I've got a gitlab container running on docker. I want to define a gitlab runner to run the docker I use on my machine. I'm stuck.
Should I make a symlink from the container to the docker executable on the machine when building the image? If yes then how should I do that?
If above is not possible how should I handle the situation I have?

Upvotes: 1

Views: 1007

Answers (2)

Parsa Noori
Parsa Noori

Reputation: 338

The solution is docker in docker (dind) can be seen here.

Upvotes: 0

Monsieur Merso
Monsieur Merso

Reputation: 2136

If I understand you correct, you want an access to docker engine of your host environment from your gitlab container. So, for example, when you execute docker ps in your gitlab container you actually accessing docker engine of the host machine.

To achieve that you have to do 2 things:

  • Install docker cli inside your gitlab container, I'm not familiar with this image, probably docker cli is already here, but to be sure here how to do this. In short:

    COPY --from=docker:latest /usr/local/bin/docker /usr/local/bin/
    

    This will copy cli binaries from docker image into your container.

  • Docker cli communicates with docker engine via unix socket: /var/run/docker.sock so you'll have to mount it inside your gitlab container.

    • If your docker engine host Os is windows, you'll have to mount it like this:

      --volume //var/run/docker.sock:/var/run/docker.sock
      
    • If your docker engine host OS is linux, it is pretty straightforward:

      --volume /var/run/docker.sock:/var/run/docker.sock
      

Upvotes: 1

Related Questions