Difference between revisions of "Docker Image for developing"

From ESS-WIKI
Jump to: navigation, search
Line 3: Line 3:
 
<span style="font-size:large;">'''Docker Run - runs processes in isolated container&nbsp;[https://docs.docker.com/engine/reference/run/ option]'''</span>
 
<span style="font-size:large;">'''Docker Run - runs processes in isolated container&nbsp;[https://docs.docker.com/engine/reference/run/ option]'''</span>
  
{| border="1" cellspacing="1" cellpadding="1" style="width:700px;"
+
{| border="1" cellspacing="1" cellpadding="1" style="width:1000px;"
 
|-
 
|-
 
| Option
 
| Option
| Description
+
| style="width: 414px;" | Description
| Note
+
| style="width: 172px;" | Note
 
|-
 
|-
 
| -d
 
| -d
| runs the container in the background
+
| style="width: 414px;" | runs the container in the background
| <br/>
+
| style="width: 172px;" | <br/>
 
|-
 
|-
 
| -it
 
| -it
| For interactive processes ( like a shell).<br/>
+
| style="width: 414px;" | For interactive processes ( like a shell).<br/>
| <br/>
+
| style="width: 172px;" | <br/>
 
|-
 
|-
 
| --name
 
| --name
| Container identification
+
| style="width: 414px;" | Container identification
| <br/>
+
| style="width: 172px;" | <br/>
 
|-
 
|-
 
| -p
 
| -p
| export port&nbsp;
+
| style="width: 414px;" | export port&nbsp;&lt;host port&gt;:&lt;internal port&gt;
| <br/>
+
| style="width: 172px;" | 80:3000
 
|-
 
|-
| <br/>
+
| exec
| <br/>
+
| style="width: 414px;" | run a command in a running container<br/>
| <br/>
+
| style="width: 172px;" | <br/>
 
|-
 
|-
| <br/>
+
| -v
| <br/>
+
| style="width: 414px;" | volume ( shared filesystems ) e.g. -v [host-src]:[container-dest]:[option]<br/>
| <br/>
+
| style="width: 172px;" | -v /run/udev:/run/udev:ro, -v $PWD:/home/adv:rw<br/>
 
|-
 
|-
| <br/>
+
| --privileged<br/>
| <br/>
+
| style="width: 414px;" | Docker will enable access to all devices on the host as well as set some configuration in AppArmor or SELinux to allow the container nearly all the same access to the host as processes running outside containers on the host<br/>
| <br/>
+
| style="width: 172px;" | <br/>
 
|}
 
|}
 
*-d&nbsp;: background service
 
*-it:: For interactive processes ( like a shell).
 
*--name:&nbsp;Container identification
 
*-p: export port&nbsp; e.g &lt;host port&gt;:&lt;internal port&gt;&nbsp; &nbsp; 80:3000
 
*exec: run a command in a running container
 
*-v&nbsp;: volume ( shared filesystems ) e.g. -v [host-src]:[container-dest]:[option]&nbsp; -v /run/udev:/run/udev:ro, -v $PWD:/home/adv:rw
 
*--privileged&nbsp;:&nbsp;Docker will enable access to all devices on the host as well as set some configuration in AppArmor or SELinux to allow the container nearly all the same access to the host as processes running outside containers on the host
 
  
 
<span style="font-size:large;">'''Start a docker container and export server port'''</span>
 
<span style="font-size:large;">'''Start a docker container and export server port'''</span>

Revision as of 09:42, 12 September 2018

Common Docker CLI

Docker Run - runs processes in isolated container option

Option Description Note
-d runs the container in the background
-it For interactive processes ( like a shell).

--name Container identification
-p export port <host port>:<internal port> 80:3000
exec run a command in a running container

-v volume ( shared filesystems ) e.g. -v [host-src]:[container-dest]:[option]
-v /run/udev:/run/udev:ro, -v $PWD:/home/adv:rw
--privileged
Docker will enable access to all devices on the host as well as set some configuration in AppArmor or SELinux to allow the container nearly all the same access to the host as processes running outside containers on the host

Start a docker container and export server port

$sudo docker run -d -it --name advigw-mqtt-bus -p 1883:1883 advigw4x86/mqtt-bus

$sudo docker run -d -it --name advigw-api-gw -p 3000:3000 advigw4x86/api-gw


Start a docker container and enter into bash

// need add -it
// Run and enter to bash
$sudo docker run -d -it --name advigw-wisesnail-lib-dev -v $PWD:/home/adv/workspace:rw advigw4x86/wisesnail-lib /bin/bash 

// Enter a running container bash
$sudo docker exec -it advigw-wisesnail-lib-dev bash


Stop / Start Docker Container

$sudo docker stop advigw-wsn-simulator

$sudo docker start advigw-wsn-simulator

Docker logs : redictor stdout 

// dcoker logs container-name > log.txt
$docker logs advigw-wsn-simulator > log.txt

// docker logs --follow container-name
$docker logs --follow advigw-wsn-simulator

Check Network of Container

$docker inspect <CONTAINER ID/NAME> | grep -w "IPAddress" | awk '{ print $2 }' | head -n 1 | cut -d "," -f1

Show all create container service

$docker ps -a

CONTAINER ID        IMAGE                                  COMMAND                  CREATED             STATUS                       PORTS
14df7ce9b276        elasticsearch                        "/docker-entrypoint.s"   8 days ago          Up 5 days                    0.0.0.0:9200->9200/tcp, 9300/tcp
fb5f646cd1ac         debug/modbus                        "/usr/local/EService-"   3 weeks ago         Up 3 weeks
ca0a5f11c3a8        eis/ensaas                           "/bin/bash"              6 months ago        Exited (0) 5 months ago

Dockerfile

alpine

https://github.com/ADVANTECH-Corp/docker-igw-image-x86/blob/mqtt-bus/Dockerfile

https://github.com/ADVANTECH-Corp/docker-igw-image-x86/blob/node-red/Dockerfile

Ubuntu 16.04

https://github.com/ADVANTECH-Corp/docker-igw-image-x86/blob/service-template/Dockerfile

Docker Compose

Familiar CLI

CLI Description Note
docker-compose up
creates ( pull ) and starts the containers
-d : in the background
docker-compose stop
stops running containers without removing them.

docker-compose start
start existing containers for a service

docker-compose down
Stops and removes containers, networks, volumes, and images created by up.

docker-compose create
Creates containers for a service. == 'up' + '--no-start'

docker-compose pause Pauses running containers of a service.

      

Example of yml file 

https://github.com/ADVANTECH-Corp/docker-edgesense-image-x86/blob/release/docker/advantech/edge-sense-services.yml

https://github.com/ADVANTECH-Corp/docker-igw-image-x86/blob/installer/advantech/eis-base-service.yml

https://github.com/ADVANTECH-Corp/docker-igw-image-x86/blob/installer/advantech/wsn-dev.sh

https://github.com/ADVANTECH-Corp/docker-igw-image-x86/blob/installer/advantech/wsn-dust-link.yml


Network Configuration in Docker Container

 sudo docker network create -d bridge --subnet 172.25.0.0/16 advigw_network
 
 sudo docker network connect advigw_network advigw-mqtt-bus
 
 sudo docker network connect advigw_network advigw-api-gw
 
 sudo docker network connect advigw_network advigw-wisesnail-lib-dev

 sudo docker network connect advigw_network advigw-wsn-simulator


How to create a Auto Build project on Docker hub with GitHub

Docker for Windows Hyper-V

https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/container-networking


https://docs.microsoft.com/zh-tw/virtualization/windowscontainers/manage-containers/container-networking