docker login
# 디렉토리로 이동
cd /docker_projects/node_hello_1/project
# 수정모드
vim package.json
{
"dependencies": {
"express": "^4.18.2"
}
}
vim Dockerfile
# 최신 node 이미지로 부터 시작
FROM node
# Working Directory 지정
# 도커 컨테이너의 작업폴더를 지정
WORKDIR /usr/src/app
# COPY package.json ./
# 앞의 ./는 HOST OS의 현재 폴더를 의미
# 뒤의 ./는 컨테이너의 현재 폴더(WORKDIR)를 의미
# 즉 외부에서 만들어둔 package.json 파일을 컨테이너 내부로 복사하겠다는 의미
COPY ./ ./
# node의 종속성 다운로드
# RUN 명령어는 컨테이너에서 실행
RUN npm install
# 안해도 되지만, 하는게 좋습니다.
# 이 컨테이너는 8080 포트를 사용한다는 의미 입니다.
# 일종의 광고
EXPOSE 8080
# docker run 명령에서 실행항 명령이, 이 명령어 부터는 제작타임이 아닌 런타임에서 실행됨
CMD ["node", "index.js"]
docker build -t node_hello_1 .
docker images
[root@localhost project]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
node_hello_1 latest 40a823117484 30 seconds ago 955MB
nginx_custom_1 latest 8950356e2e00 16 hours ago 135MB
nginx latest f71a4866129b 2 weeks ago 135MB
hello-world latest 46331d942d63 12 months ago 9.14kB
⚠️ 똑같은 이름의 이미지를 하나 더 생성할경우
# 실행중인 이미지 삭제
docker rm -f 이미지id
docker run \
--name=node_1 \
-p 8080:8080 \
--rm \
-d \
node_hello_1
username
/ 이미지이름
: 버전
# 업로드할 이미지
username/이미지명:버전
# 예시
choidaekuk/nginx_custom_1:1
⚠️ 도커 이미지는 한번 업로드하면 다시는 이름을 바꿀 수 없다.
nginx_custom_1
는 이 상태로 도커허브에 업로드 할 수 없다는 의미이다.tag
를 사용하면 새로 이미지를 만들지 않아도 문제를 해결할 수 있다.# 태그 넣는 방법
docker tag 현재이미지 허브에업로드할이름
# 예시
docker tag node_hello_1 choidaekuk/node_hello_1:1
[root@localhost project]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
choidaekuk/node_hello_1 1 40a823117484 6 minutes ago 955MB
node_hello_1 latest 40a823117484 6 minutes ago 955MB
nginx_custom_1 latest 8950356e2e00 16 hours ago 135MB
nginx latest f71a4866129b 2 weeks ago 135MB
hello-world latest 46331d942d63 12 months ago 9.14kB
# 업로드 방법
docker push 도커아이디/이미지이름:버전
# 예시
docker push choidaekuk/node_hello_1:1
877288431ac4: Preparing
cd6eccdff87e: Preparing
446432e746b2: Preparing
cae622739d69: Preparing
0705746112ce: Preparing
f8b6bd0ebb48: Waiting
080f1d3b99a1: Waiting
e45b973e5713: Waiting
3435b39010c2: Waiting
a8edac1cd93d: Waiting
9757c2df764b: Waiting
3bea8f5fca65: Waiting
denied: requested access to the resource is denied
docker rm -f node_1
docker rmi -f node_hello_1
docker rmi -f choidaekuk/node_hello_1:1
docker pull choidaekuk/node_hello_1:1
[root@localhost project]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
choidaekuk/node_hello_1 1 40a823117484 34 minutes ago 955MB
nginx_custom_1 latest 8950356e2e00 17 hours ago 135MB
nginx latest f71a4866129b 2 weeks ago 135MB
hello-world latest 46331d942d63 12 months ago 9.14kB
docker run \
--name=choidaekuk/node_hello_1:1 \
-p 8080:8080 \
--rm \
-d \
choidaekuk/node_hello_1:1