Unable to Start Docker Service on Windows 2016 TP5

So today i was playing with Docker and Containers on windows 2016 technical preview 5 with the following this guide:

https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server

I am running this a Virtual Machine in VMware 6 in my demo environment and was now planing ton use hyper-v containers just windows containers as i did not want to get involed with Nested Virtualization.

Every thing work until i try to start docker:

start-docker


PS C:\Users\Administrator> Start-Service docker

Start-Service : Failed to start service 'Docker Engine (docker)'.
At line:1 char:1
+ Start-Service docker
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service],
ServiceCommandException
+ FullyQualifiedErrorId : StartServiceFailed,Microsoft.PowerShell.Commands.StartServiceCommand

And in event viewer it display this:

Log Name: Application
Source: docker
Date: 23/09/2016 08:44:01
Event ID: 4
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: dockerwinhost
Description:
fatal: Error starting daemon: Error initializing network controller: Error creating default network: HNS failed with error : Failed to create network
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
 <System>
 <Provider Name="docker" />
 <EventID Qualifiers="0">4</EventID>
 <Level>2</Level>
 <Task>0</Task>
 <Keywords>0x80000000000000</Keywords>
 <TimeCreated SystemTime="2016-09-23T07:44:01.595966100Z" />
 <EventRecordID>297</EventRecordID>
 <Channel>Application</Channel>
 <Computer>dockerwinhost</Computer>
 <Security />
 </System>
 <EventData>
 <Data>Error starting daemon: Error initializing network controller: Error creating default network: HNS failed with error : Failed to create network</Data>
 </EventData>
</Event>

When Dockers first starts it try to create a nat network on the 172.16.0.0/12 network.  As my Demo Suite is on the 172.30.0.0 Network this class with  the nat network and cause network not to be created. To fix this Open up two powershell windows (Remember to run as Administrator). In the first windows type:

dockerd -H npipe:// -b "none"

This start docker with no network.Switch to the other power shell windows And type the following command to create a network which is not the 172.16.0.0/12 network

docker network create -d nat --subnet=192.168.0.0/24 --gateway=192.168.0.1 MyNatNetwork

Switch back to the other Powershell windows and close it. On the Powershell which is open type to start docker:


Start-Service docker

You should be able to carry on creating containers, The only problem is that i faced after that is that i could not access the containers using the nat mapping from a remote machone. Hopefully this a bug and fixed in RTM. I could access the container via the NAT IP address directly on the container host. To get the NAT IP address of the container type:


docker inspect "ID or Name of the container"

Again you will need to install firefox/chrome on the server if you trying acess to web application from the the container host.As edge does not seem to install by default in windows 2016 Server.

More info on these bugs see:

https://github.com/Microsoft/Virtualization-Documentation/issues/273

 

Admin Admin Podcast #043 – Andy finds out about the wonders of Linux!

This week Andy discover the wonders Linux Server and tell us about the story of what he has been messing around with Ubuntu Server.

Show Notes: http://www.adminadminpodcast.co.uk/admin-admin-podcast-043-show-notes-andy-finds-out-about-the-wonders-of-linux/

 

Add New Disks in Ubuntu

#This Docs describes how to attached a new HD in linux this is blog is design to works with Ubuntu.

#Display all attched DISK
sudo lshw -class disk
#Show all attched HD
sudo fdisk -l

Disk /dev/sda: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders, total 125829120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003fa82

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 121634815 60816384 83 Linux
/dev/sda2 121636862 125827071 2095105 5 Extended
/dev/sda5 121636864 125827071 2095104 82 Linux swap / Solaris

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
213 heads, 34 sectors/track, 5791 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x36e7606e

Device Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 83 Linux

Disk /dev/sdc: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

### Initiate fdisk to partition the disk:

sudo fdisk /dev/sdb

# Select n to a add a new partition
# Select 1 to a add it as primary partition

#Format it as ext3

sudo mkfs -t ext3 /dev/sdb1

##Monut the New Disk

#Create a direcory

sudo mkdir /media/mynewdrive

#Mount into manually:

sudo mount /dev/sdb1 /media/mynewdrive

#Unmount into manually:

sudo mount /dev/sdb1 /media/mynewdrive

#Automatic Mount At Boot

sudo nano -Bw /etc/fstab

#add this line

/dev/sdb1 /media/backupdrive ext4 defaults 0 2

PowerShell Script to Create new users in Active Directory

This scripts create users in active directory by look for the details listed in a CSV file which can be download here, and add a proxy email address, add to AD Groups and place them in a OU called temp OU.

You will need to change a number of values to match you environment:

  • @emaildomain.co.uk
  • OU=TempOU,DC=domain,DC=local
  • Name of the groups you would like them to be added to

If I had more time I would add in variable so you can easily change the value (may be in the future)


$csv_info = import-csv "C:\PSScripts\newusers.csv"
foreach ($line in $csv_info) 
{
    $name = $line.GivenName + " " + $line.Surname
    $samaccountname = $line.GivenName + "." + $Line.surname
    $emailaddress1 = $samaccountname + "@emaildomain.co.uk"
    $emailaddress = $emailaddress1.ToLower()
    $GROUP1 = $line.GROUP1
    $GROUP2 = $line.GROUP2
    write-host $name
    write-host $samaccountname
    write-host $emailaddress
    New-ADUser -GivenName $line.GivenName -Surname $line.Surname -Name $name -DisplayName $Name -UserPrincipalName $emailaddress -SamAccountName $SamAccountName -EmailAddress $emailaddress -Enabled $True -AccountPassword (ConvertTo-SecureString $line.Password -AsPlainText -force) -path 'OU=TempOU,DC=domain,DC=local'
    Set-ADUser $samaccountname -add @{ProxyAddresses="SMTP:$emailaddress"}
 
  If($GROUP1 -eq "YES")
 {
   Add-ADGroupMember -Identity "GROUP1" -Member $samaccountname
   write-host "Added to GROUP1"
 }

 If($GROUP2 -eq "YES")
 {
   Add-ADGroupMember -Identity "GROUP2" -Member $samaccountname
   write-host "Added to GROUP2"
 }
 
}