Setting up Docker on Oracle Linux 7

Docker has become widely popular in the last couple of years. I use it on a regular basis these days for running Oracle databases on my laptop. Docker is available on all popular Linux distributions, as well as Mac and Windows, and of course Oracle Linux is no exception. Since a long time Docker ships with the Oracle Linux 7 addons yum repository. Having setup Docker on Oracle Linux numerous times, I thought it would be good for me to document my steps for others to follow.

tl;dr

  1. Update Oracle Linux and UEK to the latest version (OL 7 and UEK5): yum upgrade
  2. Enable the addons yum repo: yum-config-manager --enable *addons
  3. Install docker-engine: yum install docker-engine

Update Oracle Linux to the latest version

First of all, here is what I have and what you will need. The examples below are based on Oracle Linux (OL) 7.5 which is the latest Oracle Linux version at the writing of this blog. When I started with Docker on Linux I used OL 7.3. Throughout these the releases the steps remained mostly the same. So it’s safe to assume that going forward the steps outlined here will still be valid. However, if you decide to use Docker on Oracle Linux, make sure you use Oracle Linux 7 and the Unbreakable Enterprise Kernel (UEK) 4 or higher as Docker is not supported before UEK 4. If you chose to use UEK3 and/or OL 6 that’s fine, just don’t come back asking me what’s wrong. 😉

The update itself is simple. All you have to do is to run yum upgrade as the root user and yum will do the rest for you:

[root@localhost ~]# yum upgrade
Loaded plugins: langpacks, ulninfo
ol7_UEKR5 | 1.2 kB 00:00:00
ol7_addons | 1.2 kB 00:00:00
ol7_latest | 1.4 kB 00:00:00
(1/7): ol7_addons/x86_64/primary | 74 kB 00:00:00
(2/7): ol7_UEKR5/x86_64/updateinfo | 73 kB 00:00:00
(3/7): ol7_addons/x86_64/updateinfo | 38 kB 00:00:01
(4/7): ol7_latest/x86_64/group | 681 kB 00:00:06
(5/7): ol7_latest/x86_64/updateinfo | 1.3 MB 00:00:11
(6/7): ol7_UEKR5/x86_64/primary | 18 MB 00:02:29
(7/7): ol7_latest/x86_64/primary | 26 MB 00:03:34
ol7_UEKR5 387/387
ol7_addons 239/239
ol7_latest 19345/19345
Resolving Dependencies
--> Running transaction check
---> Package glibc.x86_64 0:2.17-157.el7_3.4 will be updated
---> Package glibc.x86_64 0:2.17-157.el7_3.5 will be an update
---> Package glibc-common.x86_64 0:2.17-157.el7_3.4 will be updated
---> Package glibc-common.x86_64 0:2.17-157.el7_3.5 will be an update
---> Package glibc-devel.x86_64 0:2.17-157.el7_3.4 will be updated
---> Package glibc-devel.x86_64 0:2.17-157.el7_3.5 will be an update
---> Package glibc-headers.x86_64 0:2.17-157.el7_3.4 will be updated
---> Package glibc-headers.x86_64 0:2.17-157.el7_3.5 will be an update
---> Package graphite2.x86_64 0:1.3.6-1.el7_2 will be updated
---> Package graphite2.x86_64 0:1.3.10-1.el7_3 will be an update
---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.131-3.b12.el7_3 will be updated
---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.141-1.b16.el7_3 will be an update
---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.131-3.b12.el7_3 will be updated
---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.141-1.b16.el7_3 will be an update
---> Package kernel-uek.x86_64 0:4.14.35-1818.0.9.el7uek will be installed
---> Package kernel-uek-devel.x86_64 0:4.14.35-1818.0.9.el7uek will be installed
---> Package kernel-uek-firmware.noarch 0:4.14.35-1818.0.9.el7uek will be installed
--> Finished Dependency Resolution
--> Running transaction check
---> Package kernel-uek-devel.x86_64 0:4.1.12-61.1.14.el7uek will be erased
---> Package kernel-uek-firmware.noarch 0:4.1.12-61.1.14.el7uek will be erased
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================================================================================================
Package Arch Version Repository Size
==========================================================================================================================================================
Installing:
kernel-uek x86_64 4.14.35-1818.0.9.el7uek ol7_UEKR5 43 M
kernel-uek-devel x86_64 4.14.35-1818.0.9.el7uek ol7_UEKR5 11 M
kernel-uek-firmware noarch 4.14.35-1818.0.9.el7uek ol7_UEKR5 2.2 M
Updating:
glibc x86_64 2.17-157.el7_3.5 ol7_latest 3.6 M
glibc-common x86_64 2.17-157.el7_3.5 ol7_latest 11 M
glibc-devel x86_64 2.17-157.el7_3.5 ol7_latest 1.1 M
glibc-headers x86_64 2.17-157.el7_3.5 ol7_latest 668 k
graphite2 x86_64 1.3.10-1.el7_3 ol7_latest 115 k
java-1.8.0-openjdk x86_64 1:1.8.0.141-1.b16.el7_3 ol7_latest 234 k
java-1.8.0-openjdk-headless x86_64 1:1.8.0.141-1.b16.el7_3 ol7_latest 31 M
Removing:
kernel-uek-devel x86_64 4.1.12-61.1.14.el7uek @ol7_UEKR5 38 M
kernel-uek-firmware noarch 4.1.12-61.1.14.el7uek @ol7_UEKR5 2.9 M

Transaction Summary
==========================================================================================================================================================
Install 3 Packages
Upgrade 7 Packages
Remove 2 Packages

Total download size: 104 M
Is this ok [y/d/N]: y
Downloading packages:
No Presto metadata available for ol7_UEKR5
No Presto metadata available for ol7_latest
(1/10): glibc-2.17-157.el7_3.5.x86_64.rpm | 3.6 MB 00:00:29
(2/10): glibc-devel-2.17-157.el7_3.5.x86_64.rpm | 1.1 MB 00:00:08
(3/10): glibc-headers-2.17-157.el7_3.5.x86_64.rpm | 668 kB 00:00:05
(4/10): graphite2-1.3.10-1.el7_3.x86_64.rpm | 115 kB 00:00:00
(5/10): java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64.rpm | 234 kB 00:00:01
(6/10): glibc-common-2.17-157.el7_3.5.x86_64.rpm | 11 MB 00:01:33
(7/10): kernel-uek-devel-4.14.35-1818.0.9.el7uek.x86_64.rpm | 11 MB 00:01:28
(8/10): kernel-uek-firmware-4.14.35-1818.0.9.el7uek.noarch.rpm | 2.2 MB 00:00:18
(9/10): java-1.8.0-openjdk-headless-1.8.0.141-1.b16.el7_3.x86_64.rpm | 31 MB 00:04:17
(10/10): kernel-uek-4.14.35-1818.0.9.el7uek.x86_64.rpm | 43 MB 00:05:49
----------------------------------------------------------------------------------------------------------------------------------------------------------
Total 271 kB/s | 104 MB 00:06:34
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Updating : glibc-common-2.17-157.el7_3.5.x86_64 1/19
Updating : glibc-2.17-157.el7_3.5.x86_64 2/19
Updating : 1:java-1.8.0-openjdk-headless-1.8.0.141-1.b16.el7_3.x86_64 3/19
warning: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/jre/lib/security/java.security created as /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/jre/lib/security/java.security.rpmnew
Updating : glibc-headers-2.17-157.el7_3.5.x86_64 4/19
Installing : kernel-uek-firmware-4.14.35-1818.0.9.el7uek.noarch 5/19
Installing : kernel-uek-4.14.35-1818.0.9.el7uek.x86_64 6/19
Updating : glibc-devel-2.17-157.el7_3.5.x86_64 7/19
Updating : 1:java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64 8/19
Updating : graphite2-1.3.10-1.el7_3.x86_64 9/19
Installing : kernel-uek-devel-4.14.35-1818.0.9.el7uek.x86_64 10/19
Cleanup : glibc-devel-2.17-157.el7_3.4.x86_64 11/19
Cleanup : glibc-headers-2.17-157.el7_3.4.x86_64 12/19
Cleanup : kernel-uek-firmware-4.1.12-61.1.14.el7uek.noarch 13/19
Cleanup : kernel-uek-devel-4.1.12-61.1.14.el7uek.x86_64 14/19
Cleanup : 1:java-1.8.0-openjdk-1.8.0.131-3.b12.el7_3.x86_64 15/19
Cleanup : 1:java-1.8.0-openjdk-headless-1.8.0.131-3.b12.el7_3.x86_64 16/19
Cleanup : graphite2-1.3.6-1.el7_2.x86_64 17/19
Cleanup : glibc-common-2.17-157.el7_3.4.x86_64 18/19
Cleanup : glibc-2.17-157.el7_3.4.x86_64 19/19
Verifying : glibc-2.17-157.el7_3.5.x86_64 1/19
Verifying : glibc-common-2.17-157.el7_3.5.x86_64 2/19
Verifying : kernel-uek-devel-4.14.35-1818.0.9.el7uek.x86_64 3/19
Verifying : kernel-uek-firmware-4.14.35-1818.0.9.el7uek.noarch 4/19
Verifying : kernel-uek-4.14.35-1818.0.9.el7uek.x86_64 5/19
Verifying : 1:java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64 6/19
Verifying : glibc-devel-2.17-157.el7_3.5.x86_64 7/19
Verifying : graphite2-1.3.10-1.el7_3.x86_64 8/19
Verifying : 1:java-1.8.0-openjdk-headless-1.8.0.141-1.b16.el7_3.x86_64 9/19
Verifying : glibc-headers-2.17-157.el7_3.5.x86_64 10/19
Verifying : glibc-common-2.17-157.el7_3.4.x86_64 11/19
Verifying : kernel-uek-devel-4.1.12-61.1.14.el7uek.x86_64 12/19
Verifying : 1:java-1.8.0-openjdk-1.8.0.131-3.b12.el7_3.x86_64 13/19
Verifying : 1:java-1.8.0-openjdk-headless-1.8.0.131-3.b12.el7_3.x86_64 14/19
Verifying : kernel-uek-firmware-4.1.12-61.1.14.el7uek.noarch 15/19
Verifying : graphite2-1.3.6-1.el7_2.x86_64 16/19
Verifying : glibc-headers-2.17-157.el7_3.4.x86_64 17/19
Verifying : glibc-2.17-157.el7_3.4.x86_64 18/19
Verifying : glibc-devel-2.17-157.el7_3.4.x86_64 19/19

Removed:
kernel-uek-devel.x86_64 0:4.1.12-61.1.14.el7uek kernel-uek-firmware.noarch 0:4.1.12-61.1.14.el7uek

Installed:
kernel-uek.x86_64 0:4.14.35-1818.0.9.el7uek kernel-uek-devel.x86_64 0:4.14.35-1818.0.9.el7uek kernel-uek-firmware.noarch 0:4.14.35-1818.0.9.el7uek

Updated:
glibc.x86_64 0:2.17-157.el7_3.5 glibc-common.x86_64 0:2.17-157.el7_3.5 glibc-devel.x86_64 0:2.17-157.el7_3.5
glibc-headers.x86_64 0:2.17-157.el7_3.5 graphite2.x86_64 0:1.3.10-1.el7_3 java-1.8.0-openjdk.x86_64 1:1.8.0.141-1.b16.el7_3
java-1.8.0-openjdk-headless.x86_64 1:1.8.0.141-1.b16.el7_3

Complete!

Given that in my case the kernel version has changed, see that yum has installed kernel-uek.x86_64 0:4.14.35-1818.0.9.el7uek, I have to load the new kernel for my OS. The easiest way to do so is to just reboot the system. This is easily done as the root user via the reboot command.

Once the system is up and running again it is time for the next step.

Enable the addons yum repo

The addons yum repo is not enabled by default. You can verify that by typing yum repolist:

[root@localhost ~]# yum repolist
Loaded plugins: langpacks, ulninfo
repo id repo name status
ol7_UEKR5/x86_64 Latest Unbreakable Enterprise Kernel Release 4 for Oracle Linux 7Server (x86_64) 567
ol7_latest/x86_64 Oracle Linux 7Server Latest (x86_64) 23,860
repolist: 24,427

If you see the addons repo in the list above, you can skip this step. If you do not see the addons repo, like in the above output, you can enable it via yum-config-manager --enable *addons :

[root@localhost ~]# yum-config-manager --enable *addons
Loaded plugins: langpacks
============================================================== repo: ol7_addons ==============================================================
[ol7_addons]
async = True
bandwidth = 0
base_persistdir = /var/lib/yum/repos/x86_64/7Server
baseurl = http://public-yum.oracle.com/repo/OracleLinux/OL7/addons/x86_64/
cache = 0
cachedir = /var/cache/yum/x86_64/7Server/ol7_addons
check_config_file_age = True
compare_providers_priority = 80
cost = 1000
deltarpm_metadata_percentage = 100
deltarpm_percentage =
enabled = 1
enablegroups = True
exclude =
failovermethod = priority
ftp_disable_epsv = False
gpgcadir = /var/lib/yum/repos/x86_64/7Server/ol7_addons/gpgcadir
gpgcakey =
gpgcheck = True
gpgdir = /var/lib/yum/repos/x86_64/7Server/ol7_addons/gpgdir
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
hdrdir = /var/cache/yum/x86_64/7Server/ol7_addons/headers
http_caching = all
includepkgs =
ip_resolve =
keepalive = True
keepcache = False
mddownloadpolicy = sqlite
mdpolicy = group:small
mediaid =
metadata_expire = 21600
metadata_expire_filter = read-only:present
metalink =
minrate = 0
mirrorlist =
mirrorlist_expire = 86400
name = Oracle Linux 7Server Add ons (x86_64)
old_base_cache_dir =
password =
persistdir = /var/lib/yum/repos/x86_64/7Server/ol7_addons
pkgdir = /var/cache/yum/x86_64/7Server/ol7_addons/packages
proxy = False
proxy_dict =
proxy_password =
proxy_username =
repo_gpgcheck = False
retries = 10
skip_if_unavailable = False
ssl_check_cert_permissions = True
sslcacert =
sslclientcert =
sslclientkey =
sslverify = True
throttle = 0
timeout = 30.0
ui_id = ol7_addons/x86_64
ui_repoid_vars = releasever,
basearch
username =

[root@localhost ~]# yum repolist
Loaded plugins: langpacks, ulninfo
repo id repo name status
ol7_UEKR5/x86_64 Latest Unbreakable Enterprise Kernel Release 4 for Oracle Linux 7Server (x86_64) 567
ol7_addons/x86_64 Oracle Linux 7Server Add ons (x86_64) 251
ol7_latest/x86_64 Oracle Linux 7Server Latest (x86_64) 23,860
repolist: 24,678

Note, in certain cases you might have an old yum repo file which does not even include the addons repository. In that case, enabling doesn’t help you as there is no repository to enable to begin with. To get around that you have to download the latest repo file from the Oracle yum server and repeat the step above:

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# wget http://yum.oracle.com/public-yum-ol7.repo
--2018-02-03 07:13:50-- http://yum.oracle.com/public-yum-ol7.repo
Resolving yum.oracle.com (yum.oracle.com)... 151.21.208.64, 151.21.208.58
Connecting to yum.oracle.com (yum.oracle.com)|151.21.208.64|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9224 (9.0K) [text/plain]
Saving to: ‘public-yum-ol7.repo.1’

100%[====================================================================================================>] 9,224 --.-K/s in 0.1s

2018-02-03 07:14:06 (67.2 KB/s) - ‘public-yum-ol7.repo.1’ saved [9224/9224]

[root@localhost yum.repos.d]# ls -al
total 36
drwxr-xr-x. 2 root root 93 Feb 3 07:14 .
drwxr-xr-x. 133 root root 8192 Feb 3 06:38 ..
-rw-r--r--. 1 root root 2812 Feb 3 07:10 public-yum-ol7.repo
-rw-r--r--. 1 root root 9224 Feb 2 18:22 public-yum-ol7.repo.1

[root@localhost yum.repos.d]# mv public-yum-ol7.repo.1 public-yum-ol7.repo
mv: overwrite ‘public-yum-ol7.repo’? y

[root@localhost yum.repos.d]# yum-config-manager --enable *addons
Loaded plugins: langpacks
============================================================== repo: ol7_addons ==============================================================
[ol7_addons]
async = True
bandwidth = 0
base_persistdir = /var/lib/yum/repos/x86_64/7Server
baseurl = http://yum.oracle.com/repo/OracleLinux/OL7/addons/x86_64/
cache = 0
cachedir = /var/cache/yum/x86_64/7Server/ol7_addons
check_config_file_age = True
compare_providers_priority = 80
cost = 1000
deltarpm_metadata_percentage = 100
deltarpm_percentage =
enabled = 1
enablegroups = True
exclude =
failovermethod = priority
ftp_disable_epsv = False
gpgcadir = /var/lib/yum/repos/x86_64/7Server/ol7_addons/gpgcadir
gpgcakey =
gpgcheck = True
gpgdir = /var/lib/yum/repos/x86_64/7Server/ol7_addons/gpgdir
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
hdrdir = /var/cache/yum/x86_64/7Server/ol7_addons/headers
http_caching = all
includepkgs =
ip_resolve =
keepalive = True
keepcache = False
mddownloadpolicy = sqlite
mdpolicy = group:small
mediaid =
metadata_expire = 21600
metadata_expire_filter = read-only:present
metalink =
minrate = 0
mirrorlist =
mirrorlist_expire = 86400
name = Oracle Linux 7Server Add ons (x86_64)
old_base_cache_dir =
password =
persistdir = /var/lib/yum/repos/x86_64/7Server/ol7_addons
pkgdir = /var/cache/yum/x86_64/7Server/ol7_addons/packages
proxy = False
proxy_dict =
proxy_password =
proxy_username =
repo_gpgcheck = False
retries = 10
skip_if_unavailable = False
ssl_check_cert_permissions = True
sslcacert =
sslclientcert =
sslclientkey =
sslverify = True
throttle = 0
timeout = 30.0
ui_id = ol7_addons/x86_64
ui_repoid_vars = releasever,
basearch
username =

[root@localhost yum.repos.d]# yum repolist
Loaded plugins: langpacks, ulninfo
repo id repo name status
ol7_UEKR5/x86_64 Latest Unbreakable Enterprise Kernel Release 4 for Oracle Linux 7Server (x86_64) 567
ol7_addons/x86_64 Oracle Linux 7Server Add ons (x86_64) 251
ol7_latest/x86_64 Oracle Linux 7Server Latest (x86_64) 23,860
repolist: 24,678

Install and configure docker-engine

Once the addons repository is enabled, installing Docker is as easy as typing yum install docker-engine:

[root@localhost ~]# yum install docker-engine
Loaded plugins: langpacks, ulninfo
Resolving Dependencies
--> Running transaction check
---> Package docker-engine.x86_64 0:17.06.2.ol-1.0.1.el7 will be installed
--> Processing Dependency: container-selinux >= 2.9 for package: docker-engine-17.06.2.ol-1.0.1.el7.x86_64
--> Running transaction check
---> Package container-selinux.noarch 2:2.21-1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================================================================
Package Arch Version Repository Size
==================================================================================================================================================
Installing:
docker-engine x86_64 17.06.2.ol-1.0.1.el7 ol7_addons 21 M
Installing for dependencies:
container-selinux noarch 2:2.21-1.el7 ol7_addons 28 k

Transaction Summary
==================================================================================================================================================
Install 1 Package (+1 Dependent package)

Total download size: 21 M
Installed size: 74 M
Is this ok [y/d/N]: y
Downloading packages:
(1/2): container-selinux-2.21-1.el7.noarch.rpm | 28 kB 00:00:00
(2/2): docker-engine-17.06.2.ol-1.0.1.el7.x86_64.rpm | 21 MB 00:00:03
--------------------------------------------------------------------------------------------------------------------------------------------------
Total 6.6 MB/s | 21 MB 00:00:03
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : 2:container-selinux-2.21-1.el7.noarch 1/2
Installing : docker-engine-17.06.2.ol-1.0.1.el7.x86_64 2/2
xfs_info: /var/lib is not a mounted XFS filesystem
Verifying : docker-engine-17.06.2.ol-1.0.1.el7.x86_64 1/2
Verifying : 2:container-selinux-2.21-1.el7.noarch 2/2

Installed:
docker-engine.x86_64 0:17.06.2.ol-1.0.1.el7

Dependency Installed:
container-selinux.noarch 2:2.21-1.el7

Complete!

At this stage Docker is installed, next step is to configure it.

Optional: Configuring proxy environment

If you happen to run your machine behind a proxy, Docker won’t be able to pull images from the web until you tell it which proxy to use. To do so, you will have to create the drop-in file /etc/systemd/system/docker.service.d/http-proxy.conf with following content:

[Service]
Environment="HTTP_PROXY=<proxy_URL:port>"
Environment="HTTPS_PROXY=<proxy_URL:port>"

For example:

[Service]
Environment="HTTP_PROXY=my.proxy.com:80"
Environment="HTTPS_PROXY=my.proxy.com:80"

Starting and running Docker

To start the Docker daemon and enable it for autostart at boot-up, type the following two commands:

[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

Docker is now up and running, you can check via docker info:

[root@localhost ~]# docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 17.06.2-ol
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: false
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170
runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2
init version: 949e6fa
Security Options:
seccomp
Profile: default
selinux
Kernel Version: 4.14.35-1818.0.9.el7uek.x86_64
Operating System: Oracle Linux Server 7.5
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 7.781GiB
Name: localhost.localdomain
ID: OXHT:UVPJ:O6DJ:PRUK:AVH4:5MLI:YPMV:JVBT:JLPA:LX67:YJBZ:FTJS
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false

Congratulations, you now have Docker running on Oracle Linux!

There are various different configuration steps that you might want to perform as a next step, such as enabling non-root users to run Docker commands, increasing the base image size, or using a dedicated file system to manage Docker containers. You can find more information about these configurations and more in the Oracle Container Runtime for Docker User’s Guide.

Author: Gerald

Developer, Oracle expert, performance enthusiast and genuine technology geek.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.