docker
docker version
docker info
docker container run -it -p 80:80 ngnix
docker container run -d -p 80:80 ngnix
docker container run -d -p 80:80 --name ngnix-server ngnix
- Looked for image ngnix in image cache(images downloaded in your local computer)
- If not found in your local computer(cache), it looks to the deafult image repo in Dockerhub.
- Pulled it down(latest version) and store it in you image cache
- Started it in a new container.
- We specified to take port 80- on the host and forward to port 80 on the container
- We could do "$ docker container run --publish 8000:80 --detach nginx" to use port 8000
- We can specify versions like "nginx:1.09"
docker container ls
or
docker ps
docker container ls -a
or
docker ps -a
docker container stop [container ID]
docker stop $(docker ps -aq)
docker container rm [container ID]
docker container rm -f [container ID]
docker container rm [ID] [ID] [ID]
docker container logs [NAME/ID]
docker container top [NAME/ID]
docker image ls
docker pull [IMAGE]
docker image rm [IMAGE]
docker rmi $(docker image -a -q)
NGNIX:
docker container run -d -p 80:80 --name nginx nginx (-p 80:80 is optional as it runs on 80 by default)
APACHE:
docker container run -d -p 8080:80 --name apache httpd
MONGODB:
docker container run -d -p 27017:27017 --name mongo mongo
MYSQL:
docker container run -d -p 3306:3306 --name mysql --env MYSQL_ROOT_PASSWORD=123456 mysql
docker container inspect [NAME]
docker container inspect --format '{{ .NetworkSettings.IPAddress }}' [NAME]
docker container stats [NAME]
docker container run -it --name [NAME] nginx bash
docker container run -it --name ubuntu ubuntu
docker container run --rm -it --name [NAME] ubuntu
docker container start -ai ubuntu
docker container exec -it mysql bash
docker container run -it alpine sh
(use sh because it does not include bash) (alpine uses apk for its package manager - can install bash if you want)
docker container port [NAME]
docker network ls
docker network inspect [NETWORK_NAME]
("bridge" is default)
docker network create [NETWORK_NAME]
docker container run -d --name [NAME] --network [NETWORK_NAME] nginx
docker network connect [NETWORK_NAME] [CONTAINER_NAME]
docker network disconnect [NETWORK_NAME] [CONTAINER_NAME]
docker network disconnect
docker image ls
Youll see that each image has a tag
docker image tag nginx dishantsethi/nginx
docker image push dishantsethi/nginx
docker login
docker image tag dishantsethi/nginx dishantsethi/nginx:testing
- FROM - The os used. Common is alpine, debian, ubuntu
- ENV - Environment variables
- RUN - Run commands/shell scripts, etc
- EXPOSE - Ports to expose
- CMD - Final command run when you launch a new container from image
- WORKDIR - Sets working directory (also could use 'RUN cd /some/path')
- COPY # Copies files from host to container
docker image build -t [REPONAME]
- If you re-run the build, it will be quick because everythging is cached.
- If you change one line and re-run, that line and everything after will not be cached
- Keep things that change the most toward the bottom of the Dockerfile
FROM nginx:latest # Extends nginx so everything included in that image is included here WORKDIR /usr/share/nginx/html COPY index.html index.html
docker image build -t nginx-website
docker container run -p 80:80 --rm nginx-website
docker image tag nginx-website:latest dishantsethi/nginx-website:latest
docker image push dishantsethi/nginx-website
- Configure relationships between containers
- Save our docker container run settings in easy to read file
- 2 Parts: YAML File (docker.compose.yml) + CLI tool (docker-compose)
- containers
- networks
- volumes
docker-compose up
docker-compose up -d
docker-compose down