Skip to content

Instantly share code, notes, and snippets.

@yogendra
Last active August 21, 2023 09:24
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yogendra/28ac3f54ffbabb5e2046ca472097bb63 to your computer and use it in GitHub Desktop.
Save yogendra/28ac3f54ffbabb5e2046ca472097bb63 to your computer and use it in GitHub Desktop.
Jenkins on Docker

Run Jenkins on Docker

(Option 1) Docker Compose way

  1. You should have docker-compose installed. If you don't have it, get it from docker/compose release page.
  2. Get the docker-compose.yml
  3. Go to command line / terminal
  4. Go to directory containing docker-compose.yml. Generally it will be Downloads directory
  5. Run docker compose and dertach
    docker-compose up -d
  6. Get init password by executing:
    docker-compose exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

(Option 2) Do It Manually

  1. Create Isolated Network

    docker network create jenkins
  2. Create a docker certificate volume

    docker volume create jenkins-docker-certs
  3. Create a jenkins data volume

    docker volume create jenkins-data
  4. Run isolated docker environment on docker (remember inception)

    Linux/Mac

    docker container run --name jenkins-docker --rm --detach \
      --privileged --network jenkins --network-alias docker \
      --env DOCKER_TLS_CERTDIR=/certs \
      --volume jenkins-docker-certs:/certs/client \
      --volume jenkins-data:/var/jenkins_home \
      --publish 2376:2376 docker:dind

    Windows

    docker container run --name jenkins-docker --rm --detach ^
     --privileged --network jenkins --network-alias docker ^
     --env DOCKER_TLS_CERTDIR=/certs ^
     --volume jenkins-docker-certs:/certs/client ^
     --volume jenkins-data:/var/jenkins_home ^
     --publish 2376:2376 docker:dind
  5. Run jenkins

    Linux/Mac

    docker container run \
      --name jenkins-blueocean \
      --rm \
      --detach \
      --network jenkins \
      --env DOCKER_HOST=tcp://docker:2376 \
      --env DOCKER_CERT_PATH=/certs/client \
      --env DOCKER_TLS_VERIFY=1 \
      --publish 8080:8080 \
      --publish 50000:50000 \
      --volume jenkins-data:/var/jenkins_home \
      --volume jenkins-docker-certs:/certs/client:ro \
      jenkinsci/blueocean

    Windows

    docker container run ^
      --name jenkins-blueocean ^
      --rm ^
      --detach ^
      --network jenkins ^
      --env DOCKER_HOST=tcp://docker:2376 ^
      --env DOCKER_CERT_PATH=/certs/client ^
      --env DOCKER_TLS_VERIFY=1 ^
      --publish 8080:8080 ^
      --publish 50000:50000 ^
      --volume jenkins-data:/var/jenkins_home ^
      --volume jenkins-docker-certs:/certs/client:ro ^
      jenkinsci/blueocean
  6. Browse jenkins console at http://localhost:8080

  7. Get init password

    docker exec jenkins-blueocean cat /var/jenkins_home/secrets/initialAdminPassword
version: "3"
services:
docker:
image: docker:dind
privileged: true
volumes:
- jenkins-docker-certs:/certs/client
- jenkins-data:/var/jenkins_home
ports:
- "2376:2376"
environment:
DOCKER_TLS_CERTDIR: /certs
networks:
jenkins:
aliases:
- docker
jenkins:
image: jenkinsci/blueocean
depends_on:
- docker
ports:
- "8080:8080"
- "50000:50000"
environment:
DOCKER_HOST: "tcp://docker:2376"
DOCKER_CERT_PATH: "/certs/client"
DOCKER_TLS_VERIFY: "1"
networks:
jenkins: {}
volumes:
- jenkins-data:/var/jenkins_home
- jenkins-docker-certs:/certs:ro
volumes:
jenkins-docker-certs:
jenkins-data:
networks:
jenkins:
@boiledsteak
Copy link

boiledsteak commented Aug 21, 2023

Doesnt work :(

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment