본문 바로가기
컨테이너

수행평가 풀이 03

by ^..^v 2019. 6. 10.
728x90
반응형

문제

 

다음 조건을 만족하는 이미지를 Docker Hub에 등록하고 이미지의 이름을 제출합니다.

 

1. Docker Hub에서 Star가 2000개 이상인 nginx 이미지를 기반으로 컨테이너를 실행합니다.

 

2. 컨테이너 생성 시 호스트의 7988 포트와 컨테이너의 80 포트를 맵핑해 줍니다.

 

3. 컨테이너에 hello.html 파일을 생성합니다. (세부 조건 3-1~3-3 참조)

3-1. 파일 저장 경로는 접속 URL 경로를 참고하여 정의

3-2. nginx의 웹 루트 디렉터리는 "/usr/share/nginx/html/"

3-3. hello.html 내용 (OOO 대신 본인 이름을 입력)

<html>

<head>

<meta charset="utf-8">

</head>

<body>

<h1>안녕하세요. B반 OOO입니다.</h1>

</body>

</html>  

  

4. 호스트의 웹 브라우저로 http://localhost:7988/b-ban/hello.html를 접속하면, 아래와 같은 결과가 출력됩니다.

5. 컨테이너를 커밋해서 hello 이미지를 생성하고 생성한 이미지를 Docker Hub에 등록합니다.

 

6. Docker Hub에 등록된 hello 이미지의 이름을 Docker Hub ID와 함께 제출합니다.

 예: myanjini/hello:latest

 

 

평가기준

  • Docker Hub에 등록된 이미지를 검색하고, 이미지를 가져와 사용하는 능력이 있다.

  • Docker Container 실행 옵션을 이해하고 사용하는 능력이 있다.

  • 호스트의 경로와 웹 루트의 경로 간의 관계를 이해하고 이를 활용하는 능력이 있다.

  • 호스트와 컨테이너간 파일 교환 방법을 이해하고 수행하는 능력이 있다.

  • 제작한 이미지를 Docker Hub에 등록하는 능력이 있다.

 

 

문제풀이

⇒ 도커 허브에서 스타가 2000개 이상인 nginx 이미지를 검색
root@server:~/docker# docker search --filter="stars=2000" nginx 
NAME      DESCRIPTION                STARS     OFFICIAL   AUTOMATED
nginx     Official build of Nginx.   11517     [OK]       


⇒ nginx 이미지를 가져와서 컨테이너를 실행 (호스트 7988 포트를 컨테이너 80 포트로 맵핑해서 백그라운드로 실행)
root@server:~/docker# docker container run -d -p 7988:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
743f2d6c1f65: Pull complete 
d6c2f01b1dae: Pull complete 
d4da6ff1b555: Pull complete 
Digest: sha256:12db363acf5b2d2f9f5fed240e228a04692bdac68402430fbd2f720c3a967d01
Status: Downloaded newer image for nginx:latest
933adc26b143f7023f2e5eaa27a872115a535f090bd29f506112e8dc5fb3610b


⇒ 호스트에 hello.html 파일 생성 
root@server:~/docker# gedit hello.html
<html>
<head>
	<meta charset="utf-8">
</head>
<body>
	<h1>안녕하세요. B반 홍길동입니다.</h1>
</body>


⇒ 컨테이너 실행 여부 및 ID 확인
root@server:~/docker# docker container ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                  NAMES
933adc26b143        nginx               "nginx -g 'daemon ..."   About a minute ago   Up About a minute   0.0.0.0:7988->80/tcp   nostalgic_roentgen


⇒ 컨테이너 내부에 /usr/share/nginx/html/b-ban/ 디렉터리 생성
root@server:~/docker# docker container exec 933adc26b143 mkdir /usr/share/nginx/html/b-ban/


⇒ 호스트의 hello.html 파일을 컨테이너 내부로 복사
root@server:~/docker# docker container cp ./hello.html 933adc26b143:/usr/share/nginx/html/b-ban/


⇒ 호스트에서 http://localhost:7988/b-ban/hello.html 접속 확인


⇒ 컨테이너의 현재 상태로 이미지를 생성 
root@server:~/docker# docker container commit 933adc26b143 myanjini/hello:latestsha256:95a8d75b7c95b88d40a88109fc1143df2e4c29d68af4cd71f938fa46a3785c28


⇒ 이미지 생성 확인
root@server:~/docker# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
myanjini/hello      latest              95a8d75b7c95        11 seconds ago      109MB
nginx               latest              62c261073ecf        5 days ago          109MB


⇒ 도커 허브 로그인
root@server:~/docker# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: myanjini  
Password: 
Login Succeeded


⇒ 도커 허브로 이미지 등록
root@server:~/docker# docker image push myanjini/hello
The push refers to a repository [docker.io/myanjini/hello]
cf2017c64414: Pushed 
ea06a73e56fc: Pushed 
22c458a3ff08: Pushed 
6270adb5794c: Pushed 
latest: digest: sha256:3966cc46384ed517c6d5d90bf56ebcef1fe0509b0d38f6f2f303aa455a6b0910 size: 1155


⇒ 호스트에 도커 컨테이너와 이미지 모두 삭제 후 확인
root@server:~/docker# docker container rm -f $(docker container ls -aq)
root@server:~/docker# docker image rm -f $(docker image ls -aq)
root@server:~/docker# docker image ls -a
root@server:~/docker# docker container ls -a


⇒ 도커 허브에서 등록한 이미지를 내려받아서 컨테이너를 실행
root@server:~/docker# docker container run -d -p 7988:80 myanjini/hello:latest
Unable to find image 'myanjini/hello:latest' locally
latest: Pulling from myanjini/hello
f469b3e92bd8: Pull complete 
a3cd3013bd77: Pull complete 
324a832316da: Pull complete 
2c660b2a1411: Pull complete 
Digest: sha256:3966cc46384ed517c6d5d90bf56ebcef1fe0509b0d38f6f2f303aa455a6b0910
Status: Downloaded newer image for myanjini/hello:latest
6d835f6d9ba92f7833c4832b8869f14546d20f14823c5c70142cb855b82a3976


⇒ 호스트에서 http://localhost:7988/b-ban/hello.html 접속 확인
728x90
반응형

'컨테이너' 카테고리의 다른 글

스웜을 이용한 실전 애플리케이션 개발 4  (0) 2020.09.23

댓글