- 컨테이너, 이미지로 구성되어 있다.
1. 컨테이너(container)
2. Images
- 확장이 쉽다.(docker run <image_name>)
- 내리기 쉽다.(docker kill <container_id>)
Docker를 사용하려면?
⚡ 이러한 러닝 커브가 있기 때문에 빠르고 손쉬운 배포는 아니다.
docker ps
docker run nginx
docker run -p <local port 번호>:<docker port 번호> nginx
docker run -p 80:80 nginx
👉 컨테이너에서 80 포트로 요청 들어온 것을 docker의 80 포트로 보내준다는 뜻
👉 잘 실행되고 있는지 확인해 보려면 웹사이트를 통해 localhost(127.0.0.1)로 들어가 보면 된다.
👉 nginx를 끄려면 ctrl+c 또는 터미널 닫기
docker run -p 8001:80 nginx
👉 이렇게 포트 번호를 바꿨다면 localhost에 접속시 포트 번호를 뒤에 "localhost:8001"로 명시해 주어야 한다.(기본 포트는 80이기 때문에 80으로 접근시에는 포트 번호를 명시하지 않아도 된다.)
docker run -d -p 80:80 nginx
👉 그러면 아래와 같이 뜬다.
2e452a5ca8e911df17012df8e514f4aa743ed61dba49dc1ff87d4a8e8013b9fa
👉 그리고 아래의 명령어를 실행해 보면
docker ps
👉 아래와 같이 nginx가 실행되고 있는 것을 확인할 수 있다.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2e452a5ca8e9 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp magical_robinson
docker images
👉 아래와 같이 images가 뜬다.
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ad4c705f24d3 6 days ago 133MB
docker kill <container_id>
docker rmi nginx
👉 하지만 그냥 지우면 에러가 난다.
docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6740bc03d939 nginx "/docker-entrypoint.…" 2 minutes ago Exited (137) About a minute ago objective_lalande
10222122e826 nginx "/docker-entrypoint.…" 20 minutes ago Exited (137) 14 minutes ago magical_liskov
2e452a5ca8e9 nginx "/docker-entrypoint.…" 26 minutes ago Exited (137) 15 minutes ago magical_robinson
b6a8ef4260f7 nginx "/docker-entrypoint.…" 29 minutes ago Exited (0) 27 minutes ago festive_tesla
2062e30f103e nginx "/docker-entrypoint.…" 32 minutes ago Exited (0) 29 minutes ago hopeful_kapitsa
b8178816314c nginx "/docker-entrypoint.…" 37 minutes ago Exited (0) 35 minutes ago wizardly_knuth
ada7b7bb0fe6 nginx "/docker-entrypoint.…" 44 minutes ago Exited (0) 44 minutes ago jovial_goldwasser
👉 지운 container들도 아직 남아 있다.
docker container rm 6740bc03d939
docker rmi nginx
👉 아래와 같이 이미지가 삭제된다.
Untagged: nginx:latest
Untagged: nginx@sha256:853b221d3341add7aaadf5f81dd088ea943ab9c918766e295321294b035f3f3e
Deleted: sha256:ad4c705f24d392b982b2f0747704b1c5162e45674294d5640cca7076eba2865d
Deleted: sha256:cf45bd1acd3159a35178bfe8a63f910f010990175050ea6c8c333ba3afaf5123
Deleted: sha256:a9e7419d7f7c4fe55c85ce08c4f0a8b45abe9b714aa19880f553859797e0332c
Deleted: sha256:13184aa93ccd585fade03704e048828c29eed86090e7399b208edbe022aaf563
Deleted: sha256:3161f310d154031dbd57f90c07715335a25a31bcf20a4abf3e040ab86bcac633
Deleted: sha256:88f95677408c5f02b15064ad1f41a2c74e40e1800cd3536f8fb45b9e6939704b
Deleted: sha256:d000633a56813933cb0ac5ee3246cf7a4c0205db6290018a169d7cb096581046
docker run nginx
👉 그러면 이미지가 없다고 하면서 아래와 같이 images를 다운 받는다.
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
...
👉 이렇게만 하면 nginx에 접근할 수 없으므로 daemon으로 접근해 포트 설정을 해야 한다.
🔦 docker 실행 순서정리
docker run nginx
docker run -d -p <local 포트번호>:<nginx 포트번호> nginx
docker kill <conatiner_id>
docker rm <conatiner_id>
docker rmi nginx