Skip to content

How to Install Docker on CentOS 7 and Set Up A Ghost Blog

Docker is a slick container based virtualization platform that allows you to run “images,” with minimal overhead. There are many different images available, from full blown OS’s, such as Ubuntu or CentOS, to web apps like WordPress or Ghost. The possibilities are endless, and because resource usage is minimal, you can really do a lot with little resources. You can install docker on all of the major linux distributions, as well as windows. I works fine in a virtual machine, or VPS. I will be installing Docker on a CentOS 7 VM, running on an ESXi hypervisor.

Lets Get Started

I’m assuming you already have your operating system installed, you are sitting at a command prompt. Installation and configuration is very easy on CentOS 7. By default, CentOS uses firewalld. Docker and firewalld do not get along nicely. Docker creates iptables rules directly for access to running containers, and if firewalld is refreshed or restarted, all of the iptables rules docker initiated get wiped by firewalld. So, we will disable firewalld and install the classic iptables functionality. Here are the steps involved:

  • Install Docker
  • Disable firewalld
  • Install iptables configuration scripts
  • Download Ghost Docker image and run

First, we will go ahead and install Docker. To do this only requires a single, simple command.

#  sudo yum install docker

Let’s set up Docker to start at boot time.

#  sudo chkconfig docker on

There will be a handful of dependencies, nothing out of the ordinary. If you are already running as root, you can omit the sudo. Next, we need to get firewalld stopped, removed, and iptables configuration scripts installed.

Disable firewalld

#  systemctl mask firewalld

Stop firewalld

#  systemctl stop firewalld

Check the status to verify it is masked and inactive

#  systemctl status firewalld

   Loaded: masked (/dev/null)
   Active: inactive (dead)

Install iptables and dependencies

#  yum -y install iptables-services

Make sure it starts at boot

#  systemctl enable iptables
#  systemctl enable ip6tables

Now, lets start the iptables services

#  systemctl start iptables
#  systemctl start ip6tables

Now that Docker and iptables are installed and configured, go ahead and restart your server. I’ve ran into firewall issues with Docker when skipping this reboot, so I believe it’s important. After you’ve rebooted, we can download our first Docker image. The process of downloading and starting images is pretty much the same for all of them so feel free to sub in WordPress, MariaDB, NGINX, Apache, or any other image in place of Ghost. Let’s go ahead and start the Docker daemon if it’s not already:

#  sudo service docker start

Download the Ghost image. You can find other images at

#  sudo docker pull ghost

You should see it downloading a bunch of gibberish. When all lines have Pull Complete status, it will be finished. This means you are ready to fire up the image. By default, Ghost starts on port 2368. If you want this to be accessible from any server or workstation other than the docker machine itself, you need to specify a port map in the startup command. As you can see, I have mapped port 80 to port 2368 below (-p 80:2368) so that the Ghost blog is accessible on the standard port 80. If you want to run it on a different port, just change the source port, 80, to whatever you want. If you want to keep it on 2368, just put it in for both source and destination (-p 2368:2368)

#  docker run --name nameyourinstance -p 80:2368 -d ghost

Now, you can point your web browser to the IP address of your docker server, and you will see the Ghost blog.

Screen Shot 2015-05-13 at 6.20.11 PM

You still need to go through the setup process and set up an account. To do so, go to http:///admin

Screen Shot 2015-05-13 at 6.20.33 PM

Fill in all the required info, click Let’s Do This, and you’re all done! Feel free to post in the comments if you need a hand. Thanks!