Verify if cli can talk to Docker engine.
docker versionView Docker engine config values.
docker infoDocker command line structure:
docker <command> (options)
docker <command> <sub-command> (options)
Example:
docker run
docker container runRun nginx, and access in localhost
docker run --publish 80:80 nginx--publish exposes the local port 80 and route/bind all the traffic to the process inside the container running in port 80, the ip binds read like <host>:<container>: 8080:80 maps the local port 8080 to port 80 on the container.
--detach tells docker to run the container in background.
--name will give the container a name.
List containers:
docker lsJust ls will list only running containers, with -a flag for list all containers.
Stopping a container:
docker stop <id_hash>Run container in background with a name:
docker run --publish 80:80 --detach --name webhost nginxTo see logs from a container:
docker logs webhostTo see the process running inside a container:
docker top webhostTo remove containers:
docker rm <container_hash>This will not remove running containers, if you want to delete you can use the -f flag which stands for force
Example for a command which uses a specific version, -d stands for --detach:
docker container run --publish 8080:80 --name webhost -d nginx:1.11 nginx -TLet's run a mongodb container:
docker run --name mongo -d mongoTo check if the container is running use ps:
docker psContainers are just process running on the host machine!
List the process running inside the container:
docker top mongo
UID PID PPID C STIME TTY TIME CMD
999 20396 20378 4 03:37 ? 00:00:00 mongod --bind_ip_allSee the process running in the host machine:
ps aux | grep mongo
999 20396 1.4 0.4 1086084 74516 ? Ssl 03:37 0:01 mongod --bind_ip_allCheck the docker docs!
Run a nginx, a mysql and a httpd (apache) server, running them in backgroud (--detach, -d) and with a name (--name). Ports should be 80:80 (nginx), 8080:80 (httpd), and 3306:3306 (mysql)
When running the mysql container, pass the --env (or -e) flag with MYSQL_RANDOM_ROOT_PASSWORD=yes
And then use the docker logs to see the random passwword.
After clean it all up with docker stop, and docker rm and ensure everything is cleaned up with docker container ls -a.
docker run -d --name nginx -p 80:80 nginx
docker run -d --name mysql -p 3306:3306 -e MYSQL_RANDOM_ROOT_PASSWORD=yes mysql
docker run --name httpd -d -p 8080:80 httpd:alpine
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ccc570f545ba httpd:alpine "httpd-foreground" About a minute ago Up About a minute 0.0.0.0:8080->80/tcp httpd
3ea33b0ca977 mysql "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
433f43b3967b nginx "nginx -g 'daemon of…" 5 minutes ago Up 5 minutes 0.0.0.0:80->80/tcp nginx
docker logs mysql
[...]
GENERATED ROOT PASSWORD: Vieve8fe...
[...]
docker stop mysql nginx httpd
docker rm mysql nginx httpdShow container metadata:
docker inspect mysqlGet live streaming of performances stats on container:
docker stats mysqlTo run a shell inside a container:
docker run -it