Unix Container: Difference between revisions
Jump to navigation
Jump to search
Line 67: | Line 67: | ||
===Dockerfile Sample=== | ===Dockerfile Sample=== | ||
====node Js==== | ====node Js app==== | ||
* Create a new directory | |||
=====Create node app===== | |||
* Create package.json | |||
<pre> | <pre> | ||
{ | |||
"name": "docker_web_app", | |||
"version": "1.0.0", | |||
"description": "Node.js on Docker", | |||
"author": "First Last <first.last@example.com>", | |||
"main": "server.js", | |||
"scripts": { | |||
"start": "node server.js" | |||
}, | |||
"dependencies": { | |||
"express": "^4.16.1" | |||
} | |||
} | |||
</pre> | </pre> | ||
* Create server.js | |||
<pre> | |||
'use strict'; | |||
const express = require('express'); | |||
// Constants | |||
const PORT = 8080; | |||
const HOST = '0.0.0.0'; | |||
// App | |||
const app = express(); | |||
app.get('/', (req, res) => { | |||
res.send('Hello world\n'); | |||
}); | |||
app.listen(PORT, HOST); | |||
console.log(`Running on http://${HOST}:${PORT}`); | |||
</pre> | |||
=====Create Dockerfile===== | |||
* Create a file Dockerfile | |||
<pre> | |||
FROM node:10 | |||
# Create app directory | |||
WORKDIR /usr/src/app | |||
# Install app dependencies | |||
# A wildcard is used to ensure both package.json AND package-lock.json are copied | |||
# where available (npm@5+) | |||
COPY package*.json ./ | |||
RUN npm install | |||
# If you are building your code for production | |||
# RUN npm ci --only=production | |||
# Bundle app source | |||
COPY . . | |||
EXPOSE 8080 | |||
CMD [ "node", "server.js" ] | |||
</pre> | |||
* Create a file .dockerignore | |||
<pre> | |||
node_modules | |||
npm-debug.log | |||
</pre> | |||
=====Build Image===== | |||
* Don't forget the "." at the end... | |||
<syntaxhighlight lang="bash"> | |||
docker build -t <username>/<applicationname> . | |||
</syntaxhighlight> | |||
====Ghost (Blog Server)==== | ====Ghost (Blog Server)==== |
Revision as of 01:15, 11 August 2019
Container Howto
Web Site
Docker [docker.com]
Containers at Docker Store [store.docker.com]
Install and run a container
docker run -i -t ubuntu:14:04 /bin/bash
Create an image from a container Commit
"b5673dbced61" is an image id
docker commit -m "Ubuntu 14.10 Demonstrator" -a "Author Name" b5673dbced61 demo:14.10
List Images (Source to initiare a containers)
docker images
Remove an image "b5673dbced61" is an image id
docker rmi b5673dbced61
Create a volume
docker volume create --name node_red_user_data
List volumes
docker volume ls
List containers (Running Virtual Machines)
- Running:
docker ps
- Full List
docker ps -a
Start and Stop a container
- Stop
docker stop "containerId or Name"
- Start (Batch)
docker start "containerId or Name"
- Start (and login in)
docker start -i "containerId or Name"
Update a restart option
- no
- on-failure
- unless-stopped
- always
docker update --restart=on-failure <container>
"Relogin" (Attach) into a Container
- "Relogin into a running container
docker attach "container Name"
Remove a container
"d0955f21bf24" is a container Id
docker rm d0955f21bf24
Remove all containers
docker stop $(docker ps -a -q) docker rm $(docker ps -a -q)
More Advence Topics
Build an image from a Dockerfile
docker build -t objectif/appname -f pathtoDockerfile
docker build -t [username]/docker-desktop git://github.com/rogaha/docker-desktop.git
Execute more advances
docker run -i -t --net="bridge" --name Demo -v /opt/docker/data mindesktop:v01.01
Dockerfile Sample
node Js app
- Create a new directory
Create node app
- Create package.json
{ "name": "docker_web_app", "version": "1.0.0", "description": "Node.js on Docker", "author": "First Last <first.last@example.com>", "main": "server.js", "scripts": { "start": "node server.js" }, "dependencies": { "express": "^4.16.1" } }
- Create server.js
'use strict'; const express = require('express'); // Constants const PORT = 8080; const HOST = '0.0.0.0'; // App const app = express(); app.get('/', (req, res) => { res.send('Hello world\n'); }); app.listen(PORT, HOST); console.log(`Running on http://${HOST}:${PORT}`);
Create Dockerfile
- Create a file Dockerfile
FROM node:10 # Create app directory WORKDIR /usr/src/app # Install app dependencies # A wildcard is used to ensure both package.json AND package-lock.json are copied # where available (npm@5+) COPY package*.json ./ RUN npm install # If you are building your code for production # RUN npm ci --only=production # Bundle app source COPY . . EXPOSE 8080 CMD [ "node", "server.js" ]
- Create a file .dockerignore
node_modules npm-debug.log
Build Image
- Don't forget the "." at the end...
docker build -t <username>/<applicationname> .
Ghost (Blog Server)
FROM komljen/nodejs MAINTAINER Alen Komljen <alen.komljen@live.com> ENV GHOST_VERSION 0.5.7 ENV APP_ROOT /data/app RUN \ curl -sLO http://ghost.org/archives/ghost-${GHOST_VERSION}.zip && \ mkdir -p ${APP_ROOT} && \ unzip -uo ghost-${GHOST_VERSION}.zip -d ${APP_ROOT} && \ rm ghost-${GHOST_VERSION}.zip RUN \ cd ${APP_ROOT} && \ npm install --production ADD start.sh start.sh VOLUME ["$APP_ROOT"] RUN rm /usr/sbin/policy-rc.d CMD ["/start.sh"] EXPOSE 2368
Gui management solution for Docker
Portainer
Web site https://portainer.io
Dashboard access http://localhost:9000/#/dashboard
Deployment
docker run -d --name myPortainer -p 9000:9000 --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /opt/portainer:/data portainer/portainer