Difference between revisions of "Docker"

From Ever changing code
Jump to navigation Jump to search
Line 19: Line 19:
<source lang="bash">
<source lang="bash">
sudo docker pull jenkins:2.19.4
sudo docker pull jenkins:2.19.4
sudo mkdir /var/jenkins_home #a directory for the Jenkins container to share on the host
sudo docker run -d -u root -p 8080:8080 -p 50000:50000 \
  -v /var/jenkins_home:/var/jenkins_home jenkins:2.19.4
</source>
</source>



Revision as of 20:05, 27 May 2018

Containers taking a world J

Installation

To install the latest version of Docker with curl:

curl -sSL https://get.docker.com/ | sh

CentOS install:

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum clean all
sudo yum install -y --setopt=obsoletes=0 docker-ce-17.03.1.ce-1.el7.centos \
  docker-ce-selinux-17.03.1.ce-1.el7.centos
sudo systemctl start docker

Jenkins docker image

sudo docker pull jenkins:2.19.4
sudo mkdir /var/jenkins_home #a directory for the Jenkins container to share on the host
sudo docker run -d -u root -p 8080:8080 -p 50000:50000 \
  -v /var/jenkins_home:/var/jenkins_home jenkins:2.19.4

Add your user to docker group to be able to run docker commands without need of sudo

sudo usermod -aG docker yourusername

HTTP proxy

Configure docker if you run behind a proxy server. In this example CNTLM proxy runs on the host machine listening on localhost:3128. This example overrides the default docker.service file by adding configuration to the Docker systemd service file.

First, create a systemd drop-in directory for the docker service:

mkdir /etc/systemd/system/docker.service.d

Now create a file called /etc/systemd/system/docker.service.d/http-proxy.conf that adds the HTTP_PROXY environment variable:

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/"

If you have internal Docker registries that you need to contact without proxying you can specify them via the NO_PROXY environment variable:

Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"

Flush changes:

$ sudo systemctl daemon-reload

Verify that the configuration has been loaded:

$ systemctl show --property=Environment docker
Environment=HTTP_PROXY=http://proxy.example.com:80/

Restart Docker:

$ sudo systemctl restart docker

Docker run and basic options

docker run -it --name="mycentos" centos:latest /bin/bash
# -i interactive mode                                \command to execute
# -t bind to the current terminal
# -d disconnect mode, daemon mode, detached mode
# --name="name_your_container"

Docker inspect

Shows current configuration state of a docker container.

docker inspect <container_name> | grep IPAddress
           "SecondaryIPAddresses": null,
           "IPAddress": "172.17.0.3",
                   "IPAddress": "172.17.0.3",

Attach to a docker process

If you are running eg. /bin/bash as a command you can get attached to this running docker process

docker attach mycentos 

Dockerfile

Each line RUN creates a container so if possible, we should join lines so it ends up with less layers.

vi Dockerfile
FROM ubuntu:latest
MAINTAINER user1 <user1@gmail.com>

RUN apt-get update
RUN apt-get upgrade -y

Build

sudo docker build -t pio2pio/apache .

References