🐳

도커 컨테이너 실행해보기

이 포스팅은 도커 컨테이너를 처음 접하는 분들을 대상으로 작성하였습니다. 도커 컨테이너가 무엇인지 간단하게 나마 이해하고 싶으신 분들은, 도커 컨테이너 살펴보기 포스팅을 참고 바랍니다.

Step 1. run & port forwarding

docker image pull gihyodocker/echo:latest docker container run -t -p 9000:8080 gihyodocker/echo:latest curl http://localhost:9000 docker stop $(docker container ls -q)
Shell
복사

Step 2. image

FROM 인스트럭션: 도커 이미지의 바탕이 될 베이스 이미지를 지정한다. RUN 인스트럭션: 도커 이미지를 실행할 때 컨테이너 안에서 실행할 명령을 정의 COPY 인스트럭션: 도커가 동작중인 호스트머신의 파일이나 디렉터리를 도커 컨테이너 안으로 복사하는 인스트럭션 CMD 인스트럭션: 도커 컨테이너를 실행할 때 컨테이너 안에서 실행할 프로세스를 지정한다. RUN은 이미지를 빌드할 떄 실행되고 CMD는 컨테이너를 시작할 떄 한번 실행된다.
Bash
복사

실습

Dockerfile과 index.html 생성 후 생성한 위치에서 docker 명령어를 실행해봅니다.
# Dockerfile FROM nginx COPY index.html /usr/share/nginx/html
Bash
복사
# index.html <html> <head> <title>인프라공방</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <h1> 도커 컨테이너 실행해보기 </h1> </body> </html>
HTML
복사
docker image build -t example/echo:latest . docker container run -d -p 9000:80 example/echo:latest docker stop $(docker container ls --filter "ancestor=example/echo" -q)
Shell
복사

도커 이미지 관련 명령어

- docker image build - docker search - docker image pull - docker image ls - docker image tag - docker image push docker login -u [도커허브 ID] -p docker image tag example/echo [도커허브 ID]/echo:latest docker image push [도커허브 ID]/echo:latest
Bash
복사

Step 3. Docker Container

docker container run docker container run -it alpine:3.7 uname -a docker container run -t -d --name brainbackdoor example/echo:latest -i : 컨테이너쪽 표준입력과의 연결을 그대로 유지 -t : 유사터미널 기능을 활성화 --rm : 컨테이너를 종료할 때 컨테이너를 파기하도록 하는 옵션 -v : 호스트와 컨테이너간 디렉터리 혹은 파일을 공유하기 위한 옵션 docker container ls # docker ps 와 동일함 # 원하는 이름과 컨테이너명이 일치하는지 여부 --filter "name=echo1" # 생성한 이미지를 기준으로 --filter "ancestor=example/echo" docker container stop # Docker All Container Stop # docker stop $(docker ps -a -q) docker container restart docker container rm # Docker All Container Remove # docker rm $(docker ps -a -q) # Docker All Images Remove # docker rmi $(docker images -q) docker container logs -f $(docker container ls --filter "name=brainbackdoor" -q) docker logs <container id> docker container exec # docker exec -it <container id> /bin/bash # 컨테이너 내부의 상태를 확인하거나 디버깅하는 용도로 사용 # 다만, 컨테이너 안에 든 파일을 수정하는 것은 애플리케이션에 의도하지 않은 부작용을 초래할 수 있으므로 운영환경에서는 절대 해서는 안된다. docker container cp # COPY: 이미지를 빌드할 때 호스트에서 복사해온 파일을 정의하기 위한 것 # docker container cp: 실행 중인 컨테이너와 파일을 주고받기 위한 명령 docker container prune # docker image prune # docker system prune
Bash
복사