---
# System prepended metadata

title: Docker lab 6
tags: [advanced-networking]

---

---
tags: advanced-networking
---
# Docker lab 6

## Install docker without using hyper-v.

Execute following commands in powershell Administrator mode to install [chocolatey](https://chocolatey.org/)

```powershell
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
```
**Close** current powershell.

Execute following commands in powershell Administrator mode to install docker-cli and docker-machine.
```powershell
choco install docker-cli
choco install docker-machine
```
**Close** current powershell.


Create [virtualbox](https://www.virtualbox.org/) vm for docker in powershell. This vm requires **1 cpu** and **1 gb ram** only.

:::warning
You need to install virtualbox prior creating new virtualbox vm.
:::
### create virtualbox vm
```
docker-machine create --driver=virtualbox default
```

Check virtualbox docker-machine is up and running.
```
docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER     ERRORS
default   *        virtualbox   Running   tcp://192.168.99.100:2376           v18.09.9
```
If your docker-machine has't started yet. Please start it by following command.
```
docker-machine start default
```
or
```
docker-machine restart default
```

Refer to [this](https://docs.docker.com/machine/drivers/virtualbox/) to know more about virtualbox docker-machine.

### load docker-machine
Load docker-machine to current in powershell when you start to use docker commands.

```
docker-machine env default | Invoke-Expression
```

Testing
```
docker info
docker version
docker ps
docker images
```

## Turn off virtualbox virtual network cards firewall

Win + R and type `wf.msc`.

![](https://i.imgur.com/7UWSmuh.png)

## How to mount directories to docker container

before mount windows directeries to docker container, you have to create a sharing folder into virtualbox

for example: mount `d:\tmp`

1. stop virtualbox VM first
```
docker-machin stop default
```

2. create shared folder on virtualbox(default)
```
c:>\cd "c:\Program Files\Oracle\Virtualbox"

c:\Program Files\Oracle\VirtualBox>VBoxManage.exe sharedfolder add default --name "d/tmp" --hostpath "\\?\d:\tmp" --automount
```


ssh into virtualbox

```
docker-machine start default
docker-machine ssh default
```
Now you are inside docker-machine

Verify your c: or d: drive with `mount | grep -E '^/c/|^/d/'` command and you probably should see like this.

```bash
/c/Users on /c/Users type vboxsf (rw,nodev,relatime)
/d/tmp on /d/tmp type vboxsf (rw,nodev,relatime)  
```

Make sure that docker-machine is mapped into your docker-cli.
```
docker-machine env default | Invoke-Expression
```
Run a docker container to verify `d:/tmp` should contain some files.
```
docker run -v /d/tmp:/tmp -it --rm ubuntu:18.04 bash
```

![](https://i.imgur.com/EQM2eat.png)


## References

https://digitaldrummerj.me/docker-windows-mounting-directories/


