Init #
docker run hello-world
- run container fromhello world
image
Samples #
Application #
cat > app.js <<EOF
const http = require('http');
const hostname = '0.0.0.0';
const port = 80;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log('Server running at http://%s:%s/', hostname, port);
});
process.on('SIGINT', function() {
console.log('Caught interrupt signal and will exit');
process.exit();
});
EOF
Dockerfile #
cat > Dockerfile <<EOF
# Use an official Node runtime as the parent image
FROM node:6
# Set the working directory in the container to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
ADD . /app
# Make the container's port 80 available to the outside world
EXPOSE 80
# Run app.js using node when the container launches
CMD ["node", "app.js"]
EOF
Build #
docker images
- list all downloaded imagesdocker build -t node-app:0.1 .
- build image from sources with with tag node-app:0.1docker rm my-app
- remove image
Run #
docker ps
- list all running containersdocker ps -a
- list all containers including all which are stoppeddocker run -p 4000:80 --name my-app node-app:0.1
- running container in attached modedocker run -p 4000:80 --name my-app -d node-app:0.1
- running container in detached mode (in background)docker stop my-app
- stop container
Debug #
docker logs <container-id>
- displays logsdocker logs -f <container-id>
- displays logs with followdocker exec -it <container-id> /bin/bash
- “enter” container (ssh replacement)docker inspect <container-id>
docker ps --format='{{.ID}}\t{{.Label "pl.xperios.project"}}'
- outputs all running container and label with keypl.xperios.project
Publish #
docker tag node-app:0.2 gcr.io/[project-id]/node-app:0.2
- create new image with new tag from existing onegcloud docker -- push gcr.io/[project-id]/node-app:0.2
- push image to the gcr repository
To push images to your private registry hosted by gcr, you need to tag the images with a registry name. The format is [hostname]/[project-id]/[image]:[tag]
. For gcr:
[hostname]
is gcr.io[project-id]
is your project’s ID[image]
is your image name[tag]
is any string tag of your choice. If unspecified, it defaults to “latest”.
Clean up #
docker system df
- docker disk usagedocker stop $(docker ps -a -q)
- stop all containersdocker rm $(docker ps -a -q)
- delete all containersdocker rmi $(docker images -q)
- delete all images
Recipes #
Build with maven #
docker run --rm -v "$(pwd)":/app -w /app maven mvn clean install
- simple rundocker run --rm -v "$(pwd)":/app -v maven-repo:/root/.m2 -w /app maven mvn clean install
- preserve local repo
Nodejs #
docker run -it --rm --name my-running-script -v "$PWD":/usr/src/app -w /usr/src/app node:8 node your-daemon-or-script.js
- run single script