1. docker hub 및 서비스 배포할 vm 한개를 준비 한다.
2. 이미지 생성을 위한 파일 설정
- nginx에 간단한 웹서비스를 올릴 예정이라 디렉토리 내에 아래 파일 들을 준비 한다.
Dockerfile : 도커 빌드를 위한 설정파일
index.html : web서비스 홈페이지
default.conf : web서비스 기본 설정 파일
images : 웹페이지에 표시할 이미지 폴더
# touch Dockerfile
# touch default.conf
# touch index.html
# mkdir images
# ll
total 20
-rw-r--r--. 1 ec2-user ec2-user 376 Feb 5 05:10 Dockerfile
-rw-r--r--. 1 ec2-user ec2-user 347 Feb 5 05:09 default.conf
drwxr-xr-x. 2 ec2-user ec2-user 150 Feb 5 2025 images
-rw-r--r--. 1 ec2-user ec2-user 1134 Feb 5 05:08 index.html
Dockerfile 설정 내용
FROM nginx:1.23.1-alpine
EXPOSE 80
RUN apt-get update -y && \
apt-get upgrade -y && \
apt-get install -y curl && \
cd /tmp && \
apt-get install awscli -y && \
rm -rf /tmp/* && \
rm -rf /var/lib/apt/lists/*
COPY ./default.conf /etc/nginx/conf.d/default.conf
COPY ./index.html /usr/share/nginx/html/index.html
COPY ./images /usr/share/nginx/html/images
CMD nginx -g "daemon off;"
index.html 설정 내용
<!DOCTYPE html>
<html>
<head>
<title> Container Service test </title>
<style>
html {
font-family: Helvetica, Arial, sans-serif;
font-weight: 600;
font-size: 20pt;
text-transform: uppercase;
text-align: center;
background: linear-gradient(to bottom, #A7C7E7 0%, #FFB6C1 100%);
color: white;
}
img {
max-width: 60%;
height: 80vh;
border: 2px solid white;
border-radius: 25px;
}
</style>
</head>
<h1>New Container Web Page</h1>
<script language="javascript">
var imgArray = new Array();
var bucket =
"./images/";
var ext = ".jpg";
for (i = 0; i < 11; i++) {
imgArray[i] = bucket + (i + 1) + ext;
}
console.log(imgArray);
function showImage() {
var imgNum = Math.round(Math.random() * 9);
console.log(imgNum);
var objImg = document.getElementById("introImg");
objImg.src = imgArray[imgNum];
}
</script>
<body onload="showImage()">
<img id="introImg" border="0" />
</body>
</html>
default.conf 파일 설정 내용
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /web {
alias /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
image 폴더 안에는 아래와 같이 jpg 이미지
# ll images
total 2524
-rw-r--r--. 1 ec2-user ec2-user 335384 Jan 13 14:08 0.jpg
-rw-r--r--. 1 ec2-user ec2-user 253717 Jan 13 14:20 1.jpg
-rw-r--r--. 1 ec2-user ec2-user 362125 Jan 13 14:19 10.jpg
-rw-r--r--. 1 ec2-user ec2-user 310377 Jan 13 14:20 2.jpg
-rw-r--r--. 1 ec2-user ec2-user 151819 Jan 13 14:20 3.jpg
-rw-r--r--. 1 ec2-user ec2-user 128015 Jan 13 14:20 4.jpg
-rw-r--r--. 1 ec2-user ec2-user 293366 Jan 13 14:18 5.jpg
-rw-r--r--. 1 ec2-user ec2-user 200521 Jan 13 14:19 6.jpg
-rw-r--r--. 1 ec2-user ec2-user 326974 Jan 13 14:19 7.jpg
-rw-r--r--. 1 ec2-user ec2-user 83074 Jan 13 14:19 8.jpg
-rw-r--r--. 1 ec2-user ec2-user 118852 Jan 13 14:19 9.jpg
파일을 넣어 준다.
3. 이미지 빌드
# docker build -t newweb .
[+] Building 0.1s (10/10) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 474B 0.0s
=> [internal] load metadata for docker.io/library/nginx:latest 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [1/5] FROM docker.io/library/nginx:latest 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 1.28kB 0.0s
=> CACHED [2/5] RUN apt-get update -y && apt-get upgrade -y && apt-get install -y curl && cd /tmp && apt-get install awscli -y && rm -rf /tmp/* && rm -rf /var/lib/ap 0.0s
=> CACHED [3/5] COPY ./default.conf /etc/nginx/conf.d/default.conf 0.0s
=> CACHED [4/5] COPY ./index.html /usr/share/nginx/html/index.html 0.0s
=> CACHED [5/5] COPY ./images /usr/share/nginx/html/images 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:f8809eb2e015f22134cc346e5d615d2e168b3eabf4220edbe87e727e7923c327 0.0s
=> => naming to docker.io/library/newweb
# docker images newweb
REPOSITORY TAG IMAGE ID CREATED SIZE
newweb latest f8809eb2e015 2 hours ago 433MB
4. 이미지 실행
# docker run -d -p 8080:0 --name=web newweb
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9c1215e7242c newweb "/docker-entrypoint.…" 29 seconds ago Up 28 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp web
5. 서비스로 접근 확인
# curl localhost:8080
또는 웹브라우저로 접근
6. 이미지 Push
도커 허브 로그인
# docker login
이미지 tag
# docker tag newweb user01/newweb
# docker tag (local image name) (docker hub username)/(repository_name)
이미지 확인
# docker images | grep newweb
user01/newweb latest f8809eb2e015 2 hours ago 433MB
newweb latest f8809eb2e015 2 hours ago 433MB
이미지 푸시
# docker push user01/newweb
'Cloud' 카테고리의 다른 글
docker 기본 명령어 정리 (0) | 2025.02.05 |
---|
댓글