241231 도커 (nodejs 웹서버, 우분투 자바 설치, 도커 허브 푸쉬)

241231 에이콘 아카데미 수업에 기반하여 작성되었음을 알립니다.

 

🙏 Dockerfile로 도커 컨테이너 build


도커 데스크탑 실습

이미지 업로드하기 (파워쉘 사용)

실행, 중지, 삭제 모두 가능


 nodejs 환경에서 웹서버 실행하기

my2 디렉토리를 만들고 이 안에서 작업

도커파일 만들기

 

컨테이너 이미지로 빌드


우분투 환경에서 java 설치하기 

my3 디렉토리를 만들고 이 안에서 작업

Dockerfile 작성 --------------
$ nano Dockerfile
# 1. 최신 우분투 이미지 사용
FROM ubuntu:latest

# 2. 기본 패키지 업데이트 및 필요한 의존성 설치
RUN apt-get update && apt-get install -y \
    wget \
    curl \
    software-properties-common \
    gnupg2 \
    && apt-get clean

# 3. OpenJDK 21 설치
RUN add-apt-repository ppa:openjdk-r/ppa && \
    apt-get update && \
    apt-get install -y openjdk-21-jdk && \
    apt-get clean

# 4. Java 환경변수 설정
ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
ENV PATH="$JAVA_HOME/bin:$PATH"

# 5. Java 버전 확인 (빌드 시 확인용, 실행 시엔 출력되지 않음)
RUN java -version

# 6. 기본 명령 설정 (우분투 쉘로 진입)
CMD ["/bin/bash"]

 

이미지 빌드 
$ docker build -t ubuntu-java21 .

컨테이너 실행
$ docker run -it ubuntu-java21

Java 설치 확인
# java -version


Exited된 컨테이너를 다시 시작하려면
$ docker start -i 6f2802dde9d2


아파치 서버

 

$ docker exec apache1 ls /usr/local/apache2/htdocs/

$ docker exec apache1 cat /usr/local/apache2/htdocs/index.html

$ docker cp abc.html apache1:/usr/local/apache2/htdocs/

 


외부에서 html을 만들어 넣어주기

nice.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>환영해용</h1>
    외부에서 html 작성 후 http server로 전송한 파일이야
</body>
</html>

 

VMware에 work 폴더 생성 후 복붙

유저에만 권한이 있는 모습, 그룹과 아더에 권한 설정해줘야 read, write 가능

외부에서 파일을 가져왔을 때는 기본적으로 해당 유저에게만 리드, 라이트 가능 그래서 권한 설정이 필수이다.

 

아파치 서버 실행

$ docker cp /home/user/work/nice.html apache1:/usr/local/apache2/htdocs/

 

톰캣 도커 이미지 설치

 

ROOT가 없다. 원래는 있어야함!

ROOT 만들어주기

 

나노가 없음 설치해줘야함

apt update

apt install nano

 

 

 

 

윈도우에서 우분투ip 타고 들어가도 보임!


도커 저장소 push

도커는 환경만 올라감! 소스 코드나 DB 데이터는 백업을 받아두고 환경만 올리는 것

둘째 : 대상 컨테이너로 새로운 이미지 만드는 방법은 두 가지
  a : container를 commit
  b : Dockerfile을 만들어 build

이번 실습에서는 commit을 사용해 보기로 하자.
형식) docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
           CONTAINER: 변경 사항을 커밋할 컨테이너 ID 또는 이름.
           REPOSITORY: 생성된 이미지의 이름.
           TAG: 생성된 이미지의 태그(생략 시 기본값은 latest).
$ docker commit 6f2802dde9d2 ubuntu-javamy
$ docker images 

 

작동 확인

컨테이너 다시 삭제

 

푸쉬

$ docker push yyummmmmmmm/ubuntu-javamy:1.0

 

다시 받아보자!

기존 이미지 삭제

 

 

태그 삭제

 

레포지토리 삭제

 

✨ 실무에서 많은 컨테이너를 관리하기 위해 쿠버네티스라는 툴을 사용해야한다.