Docker – Basic Cheat Sheet

docker.com
docker.com

As a learning curve, I had marked Docker in my list

So just tipping some quick commands for your and my own reference as it is not a primary tool I am using day-to-day

Display Docker Images:

$ docker images

Run Docker Image:

$ docker run hello-world

Note: If you do not have an image in your local machine, docker will look into docker hub (over the internet)

Write a docker file:

$ mkdir dockerfolder

$ cd dockerfolder

$ vim newdockerfile

RUN apt-get -y update && apt-get install -y telnet

save and close your newdockerfile “wq!”

Build and image from our Docker File

$ docker build -t telnet-install .

Note: we are using a period in the end of docker build command to represent the newdockerfile within the directory

If you want to run new build file: “docker run telnet-install”

Tag your image-id: (required if you want to push to docker hub)

$ docker tag 693bce725149 terminaltolinux/telnet-install:latest

Note: image id can be found from “docker images” command

Login to docker hub:

$ docker login –username=terminaltolinux –email=terminal@linux.com

Note: after docker login command it will prompt for password, prior have a docker hub account

Push docker image to docker hub account:

$ docker push terminaltolinux/telnet-install

Note: Verify from docker hub account, the docker image will be pushed. Prior create a repo on docker hub

Delete a docker image:

$ docker rmi -f terminaltolinux/telnet-install

Pull docker image from docker hub account:

$ docker run terminaltolinux/telnet-install

Note: it will not find in the local machine as we deleted earlier and will fetch it online and run it, however “docker pull terminaltolinux/telnet-install” can also be used to just pull the image.

Search docker image:

$ docker search mysql

Search docker image with number of stars:

$ docker search -s 1 mysql

Run docker image in background:

$ docker run -d mysql

Run docker image with interactive session:

$ docker run -it ubuntu

List running containers

$ dockers ps

Inspect a container

$ docker inspect <container-id>

Note: container-id will be available from “docker ps”

Logs of standard error or standard out

$ docker log <container-id>

Commit changes to container and save as a separate image. (tag it):

$ docker commit <container-id> nginx-ubuntu

Port binding to container

$ docker run -d -p 6379 reds

Note: -p binds port but if we wanted to map this port directly on the host, we will use the option -p 6379:6379 and if with particular ip then -p 127.0.0.1:6379:6379

Binding directories

$ docker run -d -v “/home/docker/data”:/data reds

Start a container

$ docker start <container-id>

Stop a container

$ docker stop <container-id>

Remove an exited container

$ docker rm <container-id>

Restart a container

$ docker restart <container-id>

Use docker with proxy:

If you want to run docker with environment proxy, edit /etc/default/docker amend your entry for http_proxy

TIP:

If we don’t tell docker explicitly we want to map port, it will block access through that port (because containers are isolated until you tell them you want access)

Advertisements

ANSIBLE 2.0.2.0 – Basic Cheat Sheet – CentOS 6

Ansible,com
Ansible.com

To install Ansible:

# wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpminstall epel-release

# yum install epel-release-6-8.noarch.rpm

# yum update

# yum install ansible -y

Add remote hosts:

$ vim /etc/ansible/hosts

192.168.0.1 (your remote server IP) or
hostname.hostname.local (your remote server hostname)

Ping remote hosts: (if using ssh keys for authentication –ask-pass is not required)

$ ansible all -m ping –ask-pass

Ping remote hosts with specific account: (if using ssh keys for authentication –ask-pass is not required)

$ ansible all -m ping –ask-pass -u root

Execute command on remote server shell:

$ ansible all -m shell -a “mkdir /home/ansible/testdirectory” –ask-pass -u root

Remove file from remote server:

$ ansible all -m file -a “dest=/tmp/test.sh state=absent” –ask-pass -u root

Install apache on remote server:

$ ansible all -m yum -a “name=httpd state=latest” -u root

Change file permissions:

$ ansible all -m file -a “dest=/home/ansible/testfile.txt mode=600 owner=ansible group=anisble”

Confirm if package installed but do not update

$ ansible all -m yum -a “name=telnet state=present”

Confirm package is latest version

$ ansible all -m yum -a “name=telnet state=latest”

Confirm package is not installed

$ ansible all -m yum -a “name=telnet state=absent”

Start service

$ ansible all -m service -a “name=httpd state=started”

Restart service

$ ansible all -m service -a “name=httpd state=restarted”

Stop serivce

$ ansible all -m service -a “name=httpd state=stopped”

 

Gathering Facts

$ ansible all -m setup

Distribute Linux flavors in Ansible host file:

$ vim /etc/ansible/hosts

[RHEL]
192.168.1.1
rhel.redhat.test
[SUSE]
192.168.1.2
suse.opensuse.test

Only send instructions on RHEL hosts:

$ ansible RHEL  -m shell -a “mkdir /home/ansible/testfolder” 

Ansible use YaML for Automation and known as Playbook in Ansible

create a playbook i.e an .yaml file eg: telnetPlaybook.yaml


– hosts: SUSE
remote_user: root
tasks:
– zypper: name=telnet state=latest
– hosts: RHEL
remote_user: root
tasks:
– yum: name=telnet state=latest

Run playbook with Ansible: (-f switch allow the execution to be performed on multiple hosts parallel)

$ ansible-playbook telnetPlaybook.yaml -f 10

Ansible Modules (-m): These are few but there is huge list.

command – execute commands and this is default module of Ansible.
copy – copy files
shell – use remote shell to execute
file – file operations
ping – ping remote hosts
yum – Redhat package manager
git – use GIT
user – user creation, manipulation
service – manage services

If you find it interesting, spread the word 🙂

Add static proxy as Env Variable in CentOS / RedHat

PROXY
PROXY

My office environment like many others are providing us Internet via proxy, on Windows Machine/Servers as they are part of domain the policy is pushed and as you login with your domain account you will find it available.

However on Linux servers I always go ahead with doing the following:

export http_proxy=http://proxy.blah.blah:80

And whenever the servers were required to reboot the proxy used to wipe out.

This time I made sure to make it static and plan to push it via Ansible to all the Linux babies I love.

Logged in from root account:

vim /etc/environment
http_proxy=http://proxy.blah.blah:80

Save the file – Re-initialize the shell or logout and login back. You will not have to re-add it back again.

To verify the variable

echo $http_proxy

How to Change Font Colors in CentOS / RedHat

Red & Turquoise Terminal
Red & Turquoise Terminal

One of my monitor display was bothering my eyes, therefore I decided to change the colors being displayed on the monitor I am using, especially for the directory as it was dark blue and I had to dig myself inside the screen to actually read in that color. (my eyes are not week but I love small fonts)

I was not sure how to do it but knew it can be changed as I studied them long time ago, did some research and found out there are multiple ways to perform it.

As my environment is an Ansible lab therefore it did not click me to just change it for a specific user therefore I changed in environment base:

This is what I did: (from root user)

vim /etc/DIR_COLORS
DIR 01;96

Just above DIR value, I found out FILE parameter but it was commented, so i edited it to

vim /etc/DIR_COLORS
FILE 01;91

Now my terminal is displaying 96  = turquoise as DIR and 91  = light red as FILE and I like it !!

For you reference color codes:

0 = default colour
1 = bold
4 = underlined
5 = flashing text
7 = reverse field
31 = red
32 = green
33 = orange
34 = blue
35 = purple
36 = cyan
37 = grey
40 = black background
41 = red background
42 = green background
43 = orange background
44 = blue background
45 = purple background
46 = cyan background
47 = grey background
90 = dark grey
91 = light red
92 = light green
93 = yellow
94 = light blue
95 = light purple
96 = turquoise
100 = dark grey background
101 = light red background
102 = light green background
103 = yellow background
104 = light blue background
105 = light purple background
106 = turquoise background

I did not try it but if you are interested in changing it for specific user you can try this:

cp /etc/DIR_COLORS to $HOME/.dir_colors

once copied, edit you local copy i.e .dir_colors and play with it.

Don’t forget you need to re-initialize the shell or logout and login back for changes to take affect.