Jenkins in Docker-Machine - docker

I created a Docker machine using,
https://docs.docker.com/v17.12/machine/get-started/#use-machine-to-run-docker-containers
I have also created a jenkins image on that docker-machine and added the docker-build-step plugin. When I use the Test Connection I get the following message:
How do I connect my jenkins image to the docker daemon?

The protocol to connect the API is not tcp is http is a REST API URL what Jenkins expect. Try with:
http://172.21.245.40:2376

Related

Differences between Jenkins docker-agent and docker-inbound-agent

I couldn't get the differences or better say the benefits of using docker-agent or docker-inbound-agent for Jenkins as part of Cloud Nodes.
currently, I am using the routine Docker configuration for Configuration Cloud to use docker as agent to build application.
Jenkins Controller running on Host#1
another host for running docker agents!
base on GitHub readme:
docker-inbound-agent is using TCP or WebSockets to establish inbound connection to the Jenkins master.
docker-agent
docker-inbound-agent
According the docker-agent readme on github :
This image is used as the basis for the Docker Inbound Agent image. In
that image, the container is launched externally and attaches to
Jenkins.
This image may instead be used to launch an agent using the Launch
method of Launch agent via execution of command on the master.
docker-agent is used to launch an agent with a command on the master :
This launch the agent on the master.
docker-inbound-agent got the docker-agent image as basis (see on a Dockerfile) :
ARG version=latest-alpine-jdk11
FROM jenkins/agent:$version
This image was before named jnlp-slave (see this link) which got the same goal. This setup an agent which connect to the jenkins using the TCP protocol.
You also have a third agent, the docker-ssh-agent which is used to be connected to the master with SSH.

Jenkins container is not getting connecting to remote using ssh?

I have two docker container one with Jenkins and one is remote container. I want to Run a Jenkins job on remote container.
For that I have given the private keys in credentials, but still connection is not successful.
I am able to ping remote container using Jenkins container also I am able to ssh to remote container using Jenkins container.
See the screenshot below.
How are you connecting with remote host ?? Can you please share the ssh command ?
Can you please share output of below command from your Jenkins container :
cat /etc/hosts
There might be possibility that Jenkins container is able to connect using IP but not using the host_name. Try updating the the /etc/hosts file with remote container host name and then connect.
eg: 172.0.0.1 remote_host local_host
Also If you have used port forwarding, then you can simply connect with base server IP and different ports assigned to those containers.

Gitlab webhook to Docker Container running Jenkins hosted on home network

I have an Ubuntu server running 2 docker containers one is running Jenkins and the other one is running Sonarqube. My school has a private gitlab server from this server I want to create an webhook to my Jenkins to trigger a build but the following error is coming up.. And I Don't know what is going on...
enter image description here
Both port forwarded via router using the following ports:
jenkins xx.xx.xx.xxx:8080
sonarqube xx.xx.xx.xxx:8090
Getting the following error when testing the webhook using the by jenkins provided url to trigger: http://xx.xx.xx.xxx:8080/project/some_project
enter image description here
Does it have to do with docker?

Unable to login to private docker registry from Jenkins

I am trying to use Jenkins to build and push docker images to private registry. However, while trying docker login command, I am getting this error:
http: server gave HTTP response to HTTPS client
I know that this might be happening because the private registry is not added as an insecure registry. But, how I can resolve this in CI pipeline?
Jenkins is set up on a Kubernetes cluster and I am trying to automate the deployment of an application on the cluster.
This has nothing to do with the Jenkins CI pipeline or Kubernetes. Jenkins will not be able to push your images until configure follow either of the below steps
You have two options here
1) Configure your docker client to use the secure registry over HTTPS. This will include setting up self signed certificates or getting certificates from your local certificate authority.
2) Second solution is to use your registry over an unencrypted HTTP connection.
So if you are running docker on kubernetes. You will have to configure the daemon.json file in /etc/docker/daemon.json.
PS: This file might not exist. You will have to create it.
Then add in the below content. Make sure you change the url to match your docker registry
{
"insecure-registries" : ["myregistrydomain.com:5000"]
}
Then restart docker using systemctl restart docker or etc/init.d/docker restart depending on the version of linux distro installed on your cluster
Let me know if you have any questions

Jenkins: connection between docker container with jenkins master and docker container with jenkins slave

I run docker container with Jenkins master. I run docker container with Jenkins slave (slave image) and exposed port 8082:8080.
I created docker network to make containers see each other and it works (ping works).
I installed Docker Plugin on Jenkins master. I checked IP address of the slave container and tried to use it in the master's configuration, but master cannot connect to slave:
I think I'm doing something wrong. Any ideas what else should I do?
First check your docker daemon listening on your DockerURL and then try Testconnection
sudo dockerd
check API listening on
or provide your certs path to credential section.
certs path usually will be %userprofile%/.docker
It is throwing HttpHostConnectException because you are using tcp in the Docker URL field. Use http. Check the configuration document here.
I solved my problem.
Here is nice tutorial about setting up master in docker container and slaves aslo in docker containers. It doesn't use Docker Plugin.

Resources