Pre-requisites to learning docker - docker

So I have been trying to learn docker for a few days now, I am basically a windows user and I am trying to run docker on a ubuntu VM 14.04 , all I just wanted to ask was , WHAT are the pre-requisites to learning a Docker ?
Just like you can't learn jQuery , without the basics in JavaScript , just like you can't learn a framework like laravel, magento, cakePHP without the basics in PHP , just like you can't learn LESS, SASS, SCSS, without the basics in CSS in place , what would the pre-requisites for Docker be?
Can somebody list it out. Please done that I am not asking for an opinion here, I am asking for an ABSOLUTE DEFINITIVE answer to my question, which is, what are the pre-requisites for learning a tool like Docker?

In order to get Docker working on Ubuntu you should have a basic comprehension of these things
how the bash works (at least how to handle files and folders)
basics of networking on Linux/Ubuntu
apt-get (installing packages like Nodejs or Postgres)
the Unix / Linux philosophy

Since you are a Windows user, I'd recommend sticking to that well-known environment while you learn Docker. Learn one thing at a time.
Having that basic Windows knowledge, you should be able to follow on the Learn Docker book as long as you have the prerequisites stated in the book:
Basic experience creating applications with one of the following technologies: .NET Core, Java, Node.JS, PHP or Python.
Chapter 2 of the book explains how to install Docker on various systems including Windows.
Disclaimer: I'm the author of that book.

Related

Is Tensorflow/Docker Useful for Development, or just demo/tests?

I have been developing in Tensorflow/Python on OSX. Trying to graduate to the big leagues. Bought a big new GPU PC, installed linux, CUDA, Docker, Tensrflow. (Pulled out lots of hair in the process). I thought that Docker-Tensorflow would provide a linux VM environment with Tensorflow, in which I could run my IDE and work from the cmd line like before, but it just seems to serve Jupyter notebooks. I've found some posts with what seem like heroic measures to develop in Docker. I suspect that Docker-Tensorflow is just meant for running demos, serving Jupyter notebooks, etc., and that for development I should revert to a conventional Tensorflow installation. Can someone please confirm (or deny) this? Thanks!
Yes, I share your opinion. Instead I use Anaconda (prior pyenv and virtualenv) to maintain environments and (local) dependencies. In detail tensorflow itself has just a few dependencies.

Can I create a local blockchain with Ruby on Rails or Node.js instead of Ethereum+Geth?

The Question:
Does anyone know a stable framework which can be used to create a blockchain application, creating a server/node, creating a miner, a wallet, a blockchain inspector, etc?
Such a framework does not have to be in Node.js nor Ruby on Rails, but those are the two technologies I am most familiar with.
Some Background:
I have to craft an internship project based on blockchain technology.
I have been looking at Ethereum which seems nice. Ethereum's GETH command line interface allows me to create a blockchain and also mine that blockchain.
However, I need to be able to use a web-capable development platform such as Ruby on Rails, Node.js, or similar so I can have interns craft a UI to go along with a local blockchain.
I have looked at Toshi(RoR) and BitCoin.js(Node), but will need something that has better documentation.
Thanks for any and all your suggestions!
When I built Etheria, I chose the following:
Development techs:
Ubuntu Linux 14.04
Eclipse Mars 2 (get from web, not repo) (javascript formatting works
well, you can tell eclipse to format .sol files as javascript)
Solidity + chriseth's Solidity compiler at
https://ethereum.github.io/browser-solidity
And for deployment:
Digital Ocean
Ubuntu 14.04
geth (stable, not development)
node + async + express
Notes on choices:
Ubuntu 14.04 for development - As it is the Linux standard, many Ethereum docs assume it which streamlines things. Easy to install geth and keep it upgraded.
Eclipse Mars 2 - Ubuntu's packaged Eclipse is old.
Solidity - Was once (is possibly still) billed as the "official" ethereum language and is easy to learn. chriseth is the man.
Digital Ocean - cheap, easy hosting. My security needs were nil as I didn't need a wallet on the machine. If you plan on keeping wallets on your machine, your risk profile may be different and necessitate other options.
Ubuntu 14.04 for deployment - Easy to install geth and keep it upgraded.
geth - I'm sure pyeth and eth are equally valid. geth is more widely used
node - Seamless interaction with the indispensable and awesome web3.js library which is used to interact with your geth instance (which should be running with local-access-allowed IPC). Async for easy async calls, express for endpoint creation and organization.
My code:
Etheria contract: https://github.com/fivedogit/etheria
Etheria node: https://github.com/fivedogit/etheria_node

Use Docker rather than native/homebrew on Mac?

I currently have a LAMP stack installed on my mac running through Homebrew, which, to be honest hardly ever get's used.
Lately I have been working a lot with AngularJS and service based apps, so generally run the sites through a gulp / nodeJS based webserver.
I am totally frontend orientated, so very rarely do I play with backend related technologies other than the odd Drupal site and mysql.
I am interested to learn more NodeJS, perhaps even some Ruby, purely to understand programming more - not really for it to become my new job description.
So reading up on NodeJS a bit last night I read a lot about Docker, and installed it the toolkit and gui this morning. It looks pretty neat!
My question is: Would it work better for me to just run everything I need through Docker? For example, I can just install the mysql container, and turn it on when I need a db, and just spin up a drupal instance when I need one and connect it to my db instance?
I understand that running Docker on Mac is slower as it doesn't have the native Linux kernel and runs through a VM - but considering my needs from it, this should be okay?
I love the idea of just deploying containers, so will probably want to install Docker on my hosting environment too (VM in the cloud).
Follow up question: 90% of the sites I work on are AngularJS based frontends that speak to APIs that our backend guys build separately. Would it be overkill to have a Docker for each of those sites, or would I rather just run them all in one, or just bypass docker entirely for that (as I mentioned, I normally just load them up from within my Gulp's webserver)
Thanks a lot. I realise this is a n00b asking questions about big technology, but I'm trying to wrap my head around it and hopefully grow a bit in the process.
The interest in deploying Docker container is reproducibility.
You can easily reproduce:
either a complex development environment requiring the installation of numerous libraries (that you don't want to pollute directly your host)
or an execution environment, for a given tool to run (like a web server)
If you are not likely to repeat a setup (for dev or exec), a docker container would bring little value.
But if you want to keep track of the exact specification of an environment (through its Dockerfile) and will deploy it not just on your workstation, but in other places as well, then docker is certainly a good option to consider.

Step by Step Setup Guide to Neo4j Mazerunner in Windows

I would like to use the Spark-graphX packages available to Neo4j through Mazerunner, however I am an analyst and not a software person. I am running Windows 7 on my laptop and Neo4j 2.3.0, and would like a step-by-step guide explaining how I can set-up Mazerunner for both Community & Enterprise. There's a lot of mention of dockers and containers, and I have no idea what these are, or how to set them up. Simple instructions would be of sooo much help! :)
Docker is primarily Operating System Level Visualization technology designed to run on Unix based systems (Linux,Mac,FreeBSD). Luckily Docker provides a Windows version that sort of does the same thing on Unix.
What happens is, after you have installed Docker, it allows you to run what they call containers which are basically virtual machines on top of your host (Windows 7 Running Docker). This allows you to run services like Neo4j in an isolated environment. Docker also allows you to download and install pre-configured, pre-compiled images of operating systems that usually provide some sort of service or have some software pre-installed.
In your case, I believe all you have to do is:
First install Docker
Use "Docker Compose" to download and install the images.
Continue Reading the Tutorial as you have now installed the required docker images
Note: Some of the operations, like the one in Step 2 will require command-line access and Also the creation of a "docker-compose.yml" so, be sure to visit all the links I have provided. Spend a little time going through them and you should be alright.
PS: great blog. definitely bookmarking it!

Creating a Ruby on Rails environment on Windows, in a VM Vagrant Box

Is Vagrant a good solutions for creating a Rails environment in windows?
I have a powerful Windows 8 64bit desktop. I recently did a project with RoR and fell in love with it. As I found out, installing RoR on windows is just bleh; so I created a dual boot to ubuntu. As a creative developer, I find it rather difficult to get any of the "creative" done in ubuntu because of the lack of my typical creative tools.
I read a bit about a tool called Vagrant; however, I'm still unsure if it meets my requirements: adobe suite, sublime text, git, rails, rails friendly OS(mac?/ubuntu)
Typical duties: edit an image in photoshop(windows), drop it to project assets in VM?
Typical duties: push/pull to git; ssh to VPS server?
Also, I hear you can install mac os in the VM do you think thats a good option? (because I want to try their new OS)
Installing osx in Vagrant is probably possible but it would likely be quite hard, and its not really what vagrant is designed for.
As for your other questions vagrant sounds like the perfect fit.
With Vagrant you could start up an ubuntu vm and get your rails setup going. Then you could just forward a port on your local machine to the vm and load the rails site as if it were running locally on your windows PC. A quick google gets this vagrant box that looks like it might work for you - https://github.com/amaia/rails-starter-box
To work with the site you can just share a folder between the vm and your local machine which will allow you to edit images and code with your windows apps (Photoshop, sublime) so you don't actually need to install these in the ubuntu vm at all, and can pretty much work as normal.
Git is much the same... I prefer to SSH into the vagrant box and use git on the command line in ubuntu but you can just as easily use gitbash or tortoisegit from windows in the repo folder... works just as well.
A good alternative is, https://github.com/fgrehm/ventriloquist
"Ventriloquist combines Vagrant and Docker to give developers the ability to configure portable and disposable development VMs with ease. It lowers the entry barrier of building a sane working environment without the need to learn tools like Puppet or Chef."

Resources