docker build .
docker run -p [port_no]:[port_no] [image_id]
-p
flag (to publish, open port so we can reach from outside) and use image id, for example: docker run -p 3000:3000 417916cb028c
docker ps
docker stop [container_name]
docker stop relaxed_andrew
docker run [image_from_hub]
docker run node
docker ps -a
docker run -it node
docker run --help
docker run
and explains all available flags.docker run -p 8000:80 -d [image_id]
docker attach [container_name]
docker attach determined_swartz
docker logs [container_name]
docker logs feedbakc-app
docker logs -f [container_name]
docker start -a [container_name]
docker start -a determined_swartz
docker run -i -t [image_id]
or use docker run -it [image_id]
docker start -a -i [container_name]
docker rm [container_name]
docker cp [source_dir_path] [container_name]:
[path]
docker cp dummy/. silly_ellis:/test
- if /test
directory doesn't exist it will be created. Dot (.) in the command in a path means all files in a given directory.docker cp [container_name]:[path_to_file_or_folder_we_need] [local_folder]
docker cp silly_ellis:/test dummy
docker run -p [port]:[port] -d --rm --name [container_name] [image_id]
docker run -p 3000:80 -d --rm --name goalsapp 7764ae198515
docker run -p [local_port]:[docker_port] -d --rm --name [new_container_name] [image_repo_name]:[image_tag]
docker run -p 3000:80 -d --rm --name goalsapp goals:latest
docker images
docker rmi [image_id]
docker rmi 430b0f5674df
docker image prune
docker image prune -a
docker run -p [port]:[port] -d --rm [image_id]
docker run -p 3000:80 -d --rm 430b0f5674df
docker image inspect [image_id]
docker build -t [name]:[tag] .
-t
flag followed by name:tag
(name is an image repo name, and tag is actual image name) - it can be a word or a number. Example use:
docker build -t goals:latest .
docker tag [old_image_name]:[tag] [new_image_name]
docker tag node:latest rectan/hello-world
docker login
docker logout
docker push [repo_name]
docker push rectan/hello-world
docker pull [image_name]
docker pull rectan/hello-world
docker history [image_name]
docker history feedback-node:latest
docker volume rm VOL_NAME
docker volume rm feedback
docker volume prune
docker run -d -p 3000:80 --rm --name feedback-app -v feedback:/app/feedback feedback-node:volumes
-d
(detached mode), with -p
on port 3000, --rm
(remove container once stopped), --name
(name it feedback-app
) and attach the volume /app/feedback
that should be mapped to feedback
with -v
flag, lastly create it from tag (feedback-node:volumes
). This command allow you to persist the data, even after container was removed and re-created.docker run -d -p 3000:80 --rm --name feedback-app -v feedback:/app/feedback -v "/Users/andrew/training/data-volumes-01-starting-setup:/app" feedback-node:volumes
-v $(pwd):/app
)docker run -d -p 3000:80 --rm --name feedback-app -v feedback:/app/feedback -v "/Users/andrew/training/data-volumes-01-starting-setup:/app" -v /app/node_modules feedback-node:volumes
-v /app/node_modules
to container to make sure the the node module folder doesn't get overwritten by our bind mounts folder content.docker run -v /app/data ...
--rm
flag is used. Cannot be shared across containers and be re-used. Volume can be added to the Dockerfile.docker run -v data:/app/data ...
docker run -v /path/to/code/:app/code ...
docker run -d -p 3000:80 --rm --name feedback-app -v feedback:/app/feedback -v "/Users/andrew/training/data-volumes-01-starting-setup:/app:ro" -v /app/node_modules -v /app/temp feedback-node:volumes
:ro
at the end of container internal path - which overwrites default which is read-write to read-only. This ensures that docker will not be able to write into our folder or subfolders (only user on its host machine can do).docker volume inspect [volume_name]
docker volume inspect feedback
Dockerfile
, not accessible in CMD or any application code, example usage: docker build --build-arg
Dockerfile
and in application code, set via Dockerfile
or --env
or -e
on docker run
command, for example: