{"id":2234,"date":"2016-12-09T17:15:59","date_gmt":"2016-12-09T15:15:59","guid":{"rendered":"https:\/\/www.systemcodegeeks.com\/?p=2234"},"modified":"2016-12-07T11:13:04","modified_gmt":"2016-12-07T09:13:04","slug":"get-started-quickly-docker-sidekiq","status":"publish","type":"post","link":"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/","title":{"rendered":"Get Started Quickly with Docker and Sidekiq"},"content":{"rendered":"<p>In the past, I had tried to set up Docker during a few different programming competitions without ever having used it before. During the crunch time, I was unsuccessful in both setting it up and learning how it worked. But in those competitions I had the good fortune that my teammates were all able to configure their environment for the project. That still came at the cost of getting, installing, and configuring all relevant dependencies.<\/p>\n<p>And that good fortune doesn\u2019t always occur. Some systems require you to go through exhaustive steps to make things work. With Docker, any potentially tedious work gets contained and shippable to co-developers who will be able to avoid those startup costs.<\/p>\n<p>In this article, let\u2019s go a step further in how to install Docker within a Linux virtual machine that can be run on any computer operating system. So regardless of what OS you are on, you can follow along. From there, we\u2019ll get up and running with the background task manager <a href=\"http:\/\/sidekiq.org\/\">Sidekiq<\/a> as our end goal.<\/p>\n<h2>Install VirtualBox and Ubuntu Linux Server<\/h2>\n<p>VirtualBox is a great virtual machine platform that makes installing additional operating systems easy-peasy. Install <a href=\"https:\/\/www.virtualbox.org\/\">VirtualBox<\/a> if you don\u2019t have it already; after that, grab a copy of <a href=\"https:\/\/www.ubuntu.com\/download\/server\">Ubuntu Server<\/a>.<\/p>\n<p>Now let\u2019s install a new VM image:<\/p>\n<ol>\n<li>Start up VirtualBox and click <em>New<\/em>.<\/li>\n<li>Set the name for your server.<\/li>\n<li>Set type to \u201cLinux\u201d and version to \u201cUbuntu (64-bit)\u201d. If you\u2019d like, you can stick with the defaults for the rest of this VM setup and just click through.<\/li>\n<li>When asked how much RAM you want to dedicate to it, it will have a recommendation shown. Give it more than it suggests. I have 8GB on my computer so feeling very generous I\u2019ll give this VM up to 4GB(4096MB).<\/li>\n<li>Leave <em>Create virtual hard disk now<\/em> selected and click <em>Create<\/em>.<\/li>\n<li>With <em>VDI<\/em> selected, click <em>Next<\/em>.<\/li>\n<li>With <em>Dynamically allocated<\/em> selected, click <em>Next<\/em>.<\/li>\n<li>Finally, choose how much disk space you\u2019d like to dedicate to it and click <em>Create<\/em>.<\/li>\n<\/ol>\n<p>Now you\u2019re ready to install Ubuntu Server on the VM:<\/p>\n<ol>\n<li>Right click the VM you just created and open <em>Settings<\/em>.<\/li>\n<li>Select <em>Storage<\/em>.<\/li>\n<li>Click on the CD icon that says <em>Empty<\/em>.<\/li>\n<li>Over on the far right, click the CD icon dropdown menu and select <em>Choose Virtual Optical Disk File\u2026<\/em><\/li>\n<li>When the file dialog comes up, click the Ubuntu Server iso file you\u2019ve previously downloaded and click <em>Open<\/em>.<\/li>\n<li>Click <em>Okay<\/em>. Now when you start the VM, it will boot from the iso image file as if you had an installation CD in, and you can go through the quick install process.<\/li>\n<li>With the VM you\u2019ve created, click <em>Start<\/em>.<\/li>\n<\/ol>\n<p>For the Ubuntu Server installation, you can use the defaults for everything and just breeze through the install. However, it would be a more efficient use of disk space if you manually set the VM drive partition yourself.<\/p>\n<p>If you\u2019ve given a decent amount of RAM to the virtual machine, you won\u2019t need swap space (which is inefficient anyway), so manually create a drive partition using the full amount of space and put its mount point as <code>\/<\/code>. When you\u2019re given options as to what groups of packages to install, I\u2019d recommend installing the SSH server so you can shell-in from the host; this will let you copy and paste. Otherwise, you\u2019ll have to manually type most everything on the command line in the VirtualBox VM window. When asked to install \u201cgrub boot loader\u201d, choose <em>Yes<\/em>.<\/p>\n<p>Congrats! You now have a working Linux server virtual machine which works as an excellent sandbox and a fully capable server.<\/p>\n<h2>Adding the Server Virtual Machine on a Host-only Network<\/h2>\n<p>To make VirtualBox internal VMs available from your computer through a host-only network, shut down the VM with <code>shutdown -h now<\/code> and do the following in VirtualBox:<\/p>\n<ol>\n<li>File -&gt; Preferences (Alt-G)<\/li>\n<li>Network -&gt; Host-only<\/li>\n<li><code>+<\/code> (add)<\/li>\n<\/ol>\n<p>This creates a <code>vboxnet0<\/code> network that will be available across both the host system and for each configured virtual machine.<\/p>\n<p>Next, open the VM\u2019s network preferences and add a second NIC (Network Interface Card).<\/p>\n<ol>\n<li>Right-click on your VM and select <em>Settings<\/em>.<\/li>\n<li>Choose <em>Network<\/em> and then <em>Adapter 2<\/em>.<\/li>\n<li>Select <em>Enable Network Adapter<\/em>.<\/li>\n<li>Set <em>Attached to<\/em> to <em>Host-only Adapter<\/em> and click <em>OK<\/em>. It should have the correct name for the NIC chosen by default.<\/li>\n<\/ol>\n<p>On the VM, you\u2019ll need to add the network interface in the main configuration file. Run <code>ifconfig<\/code> and <code>ifconfig -a<\/code> and look for the extra one listed in the <code>-a<\/code> results. Copy that network name and place it in the <code>\/etc\/network\/interfaces<\/code> file as follows:<\/p>\n<pre class=\"brush:php\"># Host-only\r\nauto enp0s8\r\niface enp0s8 inet dhcp<\/pre>\n<p>Replace <code>enp0s8<\/code> with whatever the network card name shows up as for you. Then after a <code>reboot<\/code>, you can run <code>ifconfig<\/code> to get the host-only network IP address. This will allow you to see your Docker web apps running in the VM from the host machine at that IP address, <em>e.g.<\/em>, <code>http:\/\/192.168.56.101:3000\/<\/code>.<\/p>\n<p>You now have a functional stand-alone machine acting as a true server should.<\/p>\n<h2>Install Docker on Your Ubuntu Server VM<\/h2>\n<p>The simplest way to install Docker on this Ubuntu Server VM is to run:<\/p>\n<pre class=\"brush:php\">curl -fsSL https:\/\/get.docker.com\/ | sh\r\nsudo usermod -aG docker $(whoami)<\/pre>\n<p>The first line gets a script for Docker to be installed on Linux and runs it. The second line gives the current user\u2019s account permission to use Docker.<\/p>\n<h3>Or Manual Docker installation<\/h3>\n<p>If you\u2019d like to manually install Docker and have it configured with Ubuntu\u2019s package manager, you can follow the directions <a href=\"https:\/\/docs.docker.com\/engine\/installation\/linux\/ubuntulinux\/\">here<\/a>. An abbreviated way to do that is this:<\/p>\n<pre class=\"brush:php\">sudo apt-get update\r\nsudo apt-get install apt-transport-https ca-certificates\r\nsudo apt-key adv --keyserver hkp:\/\/ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D\r\necho \"deb https:\/\/apt.dockerproject.org\/repo ubuntu-$(. \/etc\/lsb-release &amp;&amp; echo \"$DISTRIB_CODENAME\") main\" | sudo tee \/etc\/apt\/sources.list.d\/docker.list\r\nsudo apt-get update\r\nsudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual\r\nsudo apt-get install docker-engine\r\nsudo service docker start\r\nsudo usermod -aG docker $(whoami)<\/pre>\n<h3>Docker Compose installation<\/h3>\n<p>The installation for <code>docker-compose<\/code> is as easy as copying it from the GitHub repo and making it executable.<\/p>\n<pre class=\"brush:php\">sudo curl -L \"https:\/\/github.com\/docker\/compose\/releases\/download\/1.9.0\/docker-compose-$(uname -s)-$(uname -m)\" -o \/usr\/local\/bin\/docker-compose\r\nsudo chmod +x \/usr\/local\/bin\/docker-compose<\/pre>\n<p>And for autocompletion on the command line, run the following:<\/p>\n<pre class=\"brush:php\">curl -L https:\/\/raw.githubusercontent.com\/docker\/compose\/$(docker-compose version --short)\/contrib\/completion\/bash\/docker-compose &gt; \/etc\/bash_completion.d\/docker-compose<\/pre>\n<p>Besure to reboot your VM after all Docker items are installed with the command <code>reboot<\/code>.<\/p>\n<h2>Install Rails\u2019 Development Container<\/h2>\n<p>To make the startup process with Docker much simpler, we\u2019re going to begin with a free template from <a href=\"https:\/\/bitnami.com\">Bitnami.com<\/a>. Bitnami provides many different kinds of starter installers or VM images for many different kinds of technologies, both for development or production environments. They have a <a href=\"https:\/\/github.com\/bitnami\/bitnami-docker-rails\">Ruby\/Rails Docker configuration available on GitHub<\/a>. If you\u2019re looking to do something with just Ruby or Sinatra, you may use <a href=\"https:\/\/github.com\/bitnami\/bitnami-docker-ruby\">https:\/\/github.com\/bitnami\/bitnami-docker-ruby<\/a> for a container. To install this Docker image (after previous VM reboot):<\/p>\n<pre class=\"brush:php\">mkdir ~\/myapp &amp;&amp; cd ~\/myapp\r\ncurl -LO https:\/\/raw.githubusercontent.com\/bitnami\/bitnami-docker-rails\/master\/docker-compose.yml\r\ndocker-compose up<\/pre>\n<p>This will install a couple Docker images for a Rails application and the database. Go ahead and move this process to the background with Ctrl-Z and then running <code>bg<\/code>.<\/p>\n<p>We\u2019ll now look at the example Rails site running on the host machine. Check the IP address with <code>ifconfig<\/code> and look for the NIC name you set earlier for the host-only connection. Type that IP address in with port 3000: <code>http:\/\/192.168.56.102:3000\/<\/code> and hit Enter. You will now see the success page for having Rails running.<\/p>\n<h2>Working in the Server Environment<\/h2>\n<p>If you have the Docker container running in the background, go ahead and shut it down with <code>kill %1<\/code>. Since the VM server is running with just one shell open, let\u2019s go over a few techniques for switching between processes.<\/p>\n<p>In Linux, you can run a process in the background by putting an ampersand at the end of the command or by pressing Ctrl-Z and running <code>bg<\/code> for background. When you move an application to the background in this manner, you will see a number displayed to identify it. You can use that number to kill the process or bring it back to the foreground to continue working in it with <code>fg %number<\/code>.<\/p>\n<p>When you put a process in the background, it can still write to standard output (<code>STDOUT<\/code>) and make a mess of whatever you may be doing in the terminal. For this reason, we\u2019ll want to reroute the output to a log file with <code>&amp;&gt;session.log<\/code>. So to start a Docker application quietly in the background, you can do:<\/p>\n<p><code>docker-compose up &amp;&gt;session.log &amp;<\/code><\/p>\n<p>Now you have your containers up and running, and you may run commands in them without the output from the container\u2019s Rails server spitting out log data. To see the most recent output in the session.log file, you can run <code>tail session.log<\/code>.<\/p>\n<p>If you want to scan gradually through the entire contents of the log file, you may use <code>cat session.log | more<\/code>. With this, you can use the space bar to continue by page.<\/p>\n<p>Now to run anything within the Docker instance, you need to precede it with <code>docker-compose exec myapp<\/code>. Since this may become tedious to continuously type, we can shorten it with an alias: <code>alias app='docker-compose exec myapp'<\/code>.<\/p>\n<p>Now instead of doing <code>docker-compose exec myapp ruby --version<\/code>, you can simply type <code>app ruby --version<\/code>.<\/p>\n<h2>Adding Sidekiq<\/h2>\n<p>In order to use Sidekiq, we first need to have a connection to Redis. This is super simple with Docker Compose. We just need to modify our <code>docker-compose.yml<\/code> file as follows:<\/p>\n<pre class=\"brush:php\">version: '2'\r\n\r\nservices:\r\n  mariadb:\r\n    image: bitnami\/mariadb:latest\r\n\r\n  redis:\r\n    image: redis:latest\r\n\r\n  myapp:\r\n    tty: true # Enables debugging capabilities when attached to this container.\r\n    image: bitnami\/rails:latest\r\n    environment:\r\n    depends_on:\r\n      - mariadb\r\n      - redis\r\n    ports:\r\n      - 3000:3000\r\n    volumes:\r\n      - .:\/app\r\n    env_file:\r\n      - .env\r\n\r\n  sidekiq:\r\n    build: .\r\n    command: bundle exec sidekiq\r\n    depends_on:\r\n      - mariadb\r\n      - redis\r\n    volumes:\r\n      - .:\/app\r\n    env_file:\r\n      - .env<\/pre>\n<p>Now create a <code>.env<\/code> file and put the following in it. We\u2019ve taken the <code>DATABASE_URL<\/code> that was originally in the docker-compose.yml file and moved it into <code>.env<\/code> since this environment variable will be shared across two separate processes.<\/p>\n<pre class=\"brush:php\">DATABASE_URL=mysql2:\/\/mariadb\/my_app_development\r\nJOB_WORKER_URL=redis:\/\/redis:6379\/0<\/pre>\n<p>After that, uncomment the Redis line in your Gemfile: <code>gem 'redis', '~&gt; 3.0'<\/code>. Next, edit an initializer for Sidekiq in <code>config\/initializers\/sidekiq.rb<\/code>:<\/p>\n<pre class=\"brush:php\">sidekiq_config = { url: ENV['JOB_WORKER_URL'] }\r\n\r\nSidekiq.configure_server do |config|\r\n  config.redis = sidekiq_config\r\nend\r\n\r\nSidekiq.configure_client do |config|\r\n  config.redis = sidekiq_config\r\nend<\/pre>\n<p>Now all we need to do is create a worker, and we\u2019ll be off to the races.<\/p>\n<pre class=\"brush:php\">#app\/workers\/my_worker.rb\r\nclass MyWorker\r\n  include Sidekiq::Worker\r\n  def perform(name, count)\r\n    logger.info \"#{name} says the count is #{count}\"\r\n  end\r\nend\r\n\r\n20.times do |index|\r\n  MyWorker.perform_in(index, \"Bobby\", index)\r\nend<\/pre>\n<p>And that\u2019s it. Just start up your <code>docker-compose<\/code> file, and you\u2019ll see 20 messages from your background worker. If you use <code>docker-compose up &amp;&gt;session.log &amp;<\/code>, you\u2019ll see the messages from Bobby in there from the Sidekiq process.<\/p>\n<h2>Summary<\/h2>\n<p>There are lots of How-Tos for Docker out there, and I can see that it\u2019s clearly gotten easier to get stuff done with Docker Compose. Less configuration required for a better experience all around.<\/p>\n<p>VirtualBox offers the advantage of containing an entire operating system in a single file. You can even go further and have multiple kinds of operating systems and services running via multiple VMs and experiment with different services over a virtual network. My personal favorite benefit is using it as a sandbox, which is simply a method of being more secure by keeping software separate from your primary operating system.<\/p>\n<p>Now Docker comes really close to doing most of the things VirtualBox does with emulating a VM and optional network configurations. But it\u2019s a barebones imitation and won\u2019t have tools that you haven\u2019t built into your container(s). Each tool has its own specialties.<\/p>\n<p>Sidekiq is a well-vetted, multi-threaded background job processor. Its performance outmatches all other Ruby background workers. And they have an enterprise system available to buy into.<\/p>\n<p>There was a lot of material covered here. Be sure to experiment with things to help retain the knowledge!<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"https:\/\/blog.codeship.com\/get-started-quickly-with-docker-and-sidekiq\/\">Get Started Quickly with Docker and Sidekiq<\/a> from our <a href=\"http:\/\/www.systemcodegeeks.com\/join-us\/scg\/\">SCG partner<\/a>\u00a0Daniel P. Clark at the <a href=\"http:\/\/blog.codeship.com\/\">Codeship Blog<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In the past, I had tried to set up Docker during a few different programming competitions without ever having used it before. During the crunch time, I was unsuccessful in both setting it up and learning how it worked. But in those competitions I had the good fortune that my teammates were all able to &hellip;<\/p>\n","protected":false},"author":37,"featured_media":390,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[39],"tags":[42,86],"class_list":["post-2234","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","tag-docker","tag-sidekiq"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Get Started Quickly with Docker and Sidekiq - System Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"In the past, I had tried to set up Docker during a few different programming competitions without ever having used it before. During the crunch time, I\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Get Started Quickly with Docker and Sidekiq - System Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"In the past, I had tried to set up Docker during a few different programming competitions without ever having used it before. During the crunch time, I\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/\" \/>\n<meta property=\"og:site_name\" content=\"System Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/systemcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2016-12-09T15:15:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Daniel P. Clark\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@systemcodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@systemcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel P. Clark\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/\"},\"author\":{\"name\":\"Daniel P. Clark\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/a3272a49c77b3f046273bd0be4ad9e8c\"},\"headline\":\"Get Started Quickly with Docker and Sidekiq\",\"datePublished\":\"2016-12-09T15:15:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/\"},\"wordCount\":1766,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"keywords\":[\"Docker\",\"Sidekiq\"],\"articleSection\":[\"DevOps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/\",\"url\":\"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/\",\"name\":\"Get Started Quickly with Docker and Sidekiq - System Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"datePublished\":\"2016-12-09T15:15:59+00:00\",\"description\":\"In the past, I had tried to set up Docker during a few different programming competitions without ever having used it before. During the crunch time, I\",\"breadcrumb\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/#primaryimage\",\"url\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"contentUrl\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.systemcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DevOps\",\"item\":\"https:\/\/www.systemcodegeeks.com\/category\/devops\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Get Started Quickly with Docker and Sidekiq\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#website\",\"url\":\"https:\/\/www.systemcodegeeks.com\/\",\"name\":\"System Code Geeks\",\"description\":\"Operating System Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.systemcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.systemcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/systemcodegeeks\",\"https:\/\/x.com\/systemcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/a3272a49c77b3f046273bd0be4ad9e8c\",\"name\":\"Daniel P. Clark\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bdc9ee5a6bfa15b184a6f35f5f41897d6254638bc2d1ac8cb2dc2dace1457e1e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bdc9ee5a6bfa15b184a6f35f5f41897d6254638bc2d1ac8cb2dc2dace1457e1e?s=96&d=mm&r=g\",\"caption\":\"Daniel P. Clark\"},\"description\":\"Daniel P. Clark is a freelance developer, as well as a Ruby and Rust enthusiast. He writes about Ruby on his personal site.\",\"url\":\"https:\/\/www.systemcodegeeks.com\/author\/daniel-p-clark\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Get Started Quickly with Docker and Sidekiq - System Code Geeks - 2026","description":"In the past, I had tried to set up Docker during a few different programming competitions without ever having used it before. During the crunch time, I","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/","og_locale":"en_US","og_type":"article","og_title":"Get Started Quickly with Docker and Sidekiq - System Code Geeks - 2026","og_description":"In the past, I had tried to set up Docker during a few different programming competitions without ever having used it before. During the crunch time, I","og_url":"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/","og_site_name":"System Code Geeks","article_publisher":"https:\/\/www.facebook.com\/systemcodegeeks","article_published_time":"2016-12-09T15:15:59+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","type":"image\/jpeg"}],"author":"Daniel P. Clark","twitter_card":"summary_large_image","twitter_creator":"@systemcodegeeks","twitter_site":"@systemcodegeeks","twitter_misc":{"Written by":"Daniel P. Clark","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/#article","isPartOf":{"@id":"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/"},"author":{"name":"Daniel P. Clark","@id":"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/a3272a49c77b3f046273bd0be4ad9e8c"},"headline":"Get Started Quickly with Docker and Sidekiq","datePublished":"2016-12-09T15:15:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/"},"wordCount":1766,"commentCount":0,"publisher":{"@id":"https:\/\/www.systemcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/#primaryimage"},"thumbnailUrl":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","keywords":["Docker","Sidekiq"],"articleSection":["DevOps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/","url":"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/","name":"Get Started Quickly with Docker and Sidekiq - System Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.systemcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/#primaryimage"},"image":{"@id":"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/#primaryimage"},"thumbnailUrl":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","datePublished":"2016-12-09T15:15:59+00:00","description":"In the past, I had tried to set up Docker during a few different programming competitions without ever having used it before. During the crunch time, I","breadcrumb":{"@id":"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/#primaryimage","url":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","contentUrl":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.systemcodegeeks.com\/devops\/get-started-quickly-docker-sidekiq\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.systemcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"DevOps","item":"https:\/\/www.systemcodegeeks.com\/category\/devops\/"},{"@type":"ListItem","position":3,"name":"Get Started Quickly with Docker and Sidekiq"}]},{"@type":"WebSite","@id":"https:\/\/www.systemcodegeeks.com\/#website","url":"https:\/\/www.systemcodegeeks.com\/","name":"System Code Geeks","description":"Operating System Developers Resource Center","publisher":{"@id":"https:\/\/www.systemcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.systemcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.systemcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.systemcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.systemcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.systemcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/systemcodegeeks","https:\/\/x.com\/systemcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/a3272a49c77b3f046273bd0be4ad9e8c","name":"Daniel P. Clark","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/bdc9ee5a6bfa15b184a6f35f5f41897d6254638bc2d1ac8cb2dc2dace1457e1e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bdc9ee5a6bfa15b184a6f35f5f41897d6254638bc2d1ac8cb2dc2dace1457e1e?s=96&d=mm&r=g","caption":"Daniel P. Clark"},"description":"Daniel P. Clark is a freelance developer, as well as a Ruby and Rust enthusiast. He writes about Ruby on his personal site.","url":"https:\/\/www.systemcodegeeks.com\/author\/daniel-p-clark\/"}]}},"_links":{"self":[{"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/posts\/2234","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/users\/37"}],"replies":[{"embeddable":true,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/comments?post=2234"}],"version-history":[{"count":0,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/posts\/2234\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/media\/390"}],"wp:attachment":[{"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/media?parent=2234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/categories?post=2234"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/tags?post=2234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}