문제
다음 조건을 만족하는 이미지를 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 접속 확인
'컨테이너' 카테고리의 다른 글
스웜을 이용한 실전 애플리케이션 개발 4 (0) | 2020.09.23 |
---|
댓글