logoStephen's 기술블로그

포스트 검색

제목, 태그로 포스트를 검색해보세요

#004 #Dockerfile/Export

#004 #Dockerfile/Export
Docker
2024년 6월 11일
목차

👉 기본 세팅

notion image
일단 깔끔하게 다 지우고 시작하자.
일단 깔끔하게 다 지우고 시작하자.
notion image
ex02에 Dockerfile 생성 세팅하자.
ex02에 Dockerfile 생성 세팅하자.
notion image
도커허브에서 openJDK 검색 → 무료다.
도커허브에서 openJDK 검색 → 무료다.
notion image
도커허브에서  Sort by A-Z 설정하고 11-jdk 검색어로 검색해서 찾자!
도커허브에서 Sort by A-Z 설정하고 11-jdk 검색어로 검색해서 찾자!
slim이라는 컨벤션은 해당 기능만 가져오고 싶을 때 사용. "Slim" 패키지는 해당 라이브러리나 프레임워크의 핵심 기능만 포함하고, 추가적인 부가 기능이나 모듈은 포함되지 않습니다. 예를 들어, 로깅, 테스트, 디버깅과 같은 기능이 제외될 수 있습니다.
notion image
11-jdk-slim 은 debian 계열의 OS를 사용한다.
11-jdk-slim 은 debian 계열의 OS를 사용한다.
 
환경변수 만드는 법
환경패스 설정하는 법
 

👉 Dockerfile 작성

notion image
JavaScript
// Dockerfile 작성
FROM openjdk:11-jdk-slim
JavaScript
//bash에서 빌드 명령어 
docker build -t codingspeacialist/openjdk:11 .
 
notion image
아주 간단하게 빌드가 되었다.
아주 간단하게 빌드가 되었다.
 
notion image
docker images
도커 이미지로 확인 가능
docker images 도커 이미지로 확인 가능
notion image
JavaScript
//docker run -dit 이미지명 bash (쉘 종류 많음) sh
docker run -dit codingspeacialist/openjdk:11 bash
컨테이를 안끄고 실행하고 싶다면 -dit 를 붙이면 된다. 
bash가 만약에 설치가 안되어있으면 sh(shell)로 실행해야 될 수도 있다.
컨테이를 안끄고 실행하고 싶다면 -dit 를 붙이면 된다. bash가 만약에 설치가 안되어있으면 sh(shell)로 실행해야 될 수도 있다.
명령어 설명
notion image
JavaScript
// 컨테이너 연결하는 명령어
docker attach 컨테이너 ID
접속은  attach로 하면 된다. 
docker attach: Docker 명령어로, 이미 실행 중인 컨테이너에 연결합니다.
접속은 attach로 하면 된다. docker attach: Docker 명령어로, 이미 실행 중인 컨테이너에 연결합니다.
 

👉 체크

notion image
java --version
버전 확인 openjdk 11이 설치 되어있구나.
java --version 버전 확인 openjdk 11이 설치 되어있구나.
notion image
echo $JAVA_HOME
JAVA_HOME 변수도 등록이 되어있구나.
echo $JAVA_HOME JAVA_HOME 변수도 등록이 되어있구나.
notion image
그럼 cd $JAVA_HOME 으로 해당 폴더도 이동 가능하겠네
그럼 cd $JAVA_HOME 으로 해당 폴더도 이동 가능하겠네
 
notion image
bin폴더는 무조건 존재한다. 
ls으로 내부를 확인 해보면 javac랑 java 가 보이네.
bin폴더는 무조건 존재한다. ls으로 내부를 확인 해보면 javac랑 java 가 보이네.
notion image
JavaScript
// ls의 반환 값을 파이프라인 (|) 을 통해서 grep으로 넘긴다. 그중에서 java를 찾는다. 
ls -l | grep java
notion image
cd ~/
홈 폴더 확인 명령어
cd ~/ 홈 폴더 확인 명령어
notion image
pwd
현재 위치 확인 가능명령어
pwd 현재 위치 확인 가능명령어
notion image
echo $HOME
HOME도 환경 변수가 되네~
echo $HOME HOME도 환경 변수가 되네~
notion image
JavaScript
// -a는 숨김 파일도 확인할 수 있다. 
ls -a
루트 폴더 내부를 보면 이렇게 나오네,
.bashrc 를 vi로 실행 해보자.
루트 폴더 내부를 보면 이렇게 나오네, .bashrc 를 vi로 실행 해보자.
notion image
vi .bashrc
VI가 없구나
vi .bashrc VI가 없구나
notion image
cat .bashrc
자세히 보기 명령어인 cat으로 bashrc를 자세히 보기가 가능하다.
여기서 환경변수를 등록한다.
cat .bashrc 자세히 보기 명령어인 cat으로 bashrc를 자세히 보기가 가능하다. 여기서 환경변수를 등록한다.
notion image
cat .profile
cat .profile도 들어가보자. 
음… 볼게 없네 라고 하심.
cat .profile cat .profile도 들어가보자. 음… 볼게 없네 라고 하심.
 

🔹 hello.sh 생성하기

notion image
JavaScript
// hello.sh 파일 bash에서 생성하기
1. mkdir hello      // hello폴더를 만든다.
2. 폴더에 접근 
3. echo 'echo Hellow World' > hello.sh 로 해당파일을 만든다.
4. ls 명령어로 생성을 확인한다. 
리다이렉션 연산자 :  “ > “
리다이렉션 연산자 : “ > “
  • 리다이렉션 연산자로, 표준 출력(stdout)을 지정된 파일로 보냅니다.
  • 여기서는 > 연산자가 echo 명령어의 출력을 hello.sh 파일로 리다이렉트합니다.
  • >는 해당 파일이 이미 존재하면 내용을 덮어쓰고, 파일이 없으면 새로 만듭니다.
 

🔹 hello.sh 권한 수정하기

notion image
ls -l 
파일 내용 상세보기 권한까지 볼 수 있다. 
chmod 777 hello.sh
hello.sh 파일의 권한을 변경한다. 여기서 “777”은 파일에 모든 사용자에게 읽기, 쓰기, 실행 권한을 부여하는 것을 의미.
ls -l 파일 내용 상세보기 권한까지 볼 수 있다. chmod 777 hello.sh hello.sh 파일의 권한을 변경한다. 여기서 “777”은 파일에 모든 사용자에게 읽기, 쓰기, 실행 권한을 부여하는 것을 의미.
 

🔹 왜? 그냥실행하면 안되고, “./” 을 붙여야 되지??

notion image
왜 바로 못찾고 ./ 키워드가 필요했을까???
왜 바로 못찾고 ./ 키워드가 필요했을까???
  • 현재 디렉토리에 있는 hello.sh 파일을 실행하려고 했으나, 셸은 이를 찾을 수 없었습니다. 이는 현재 디렉토리가 PATH 환경 변수에 포함되지 않았기 때문
  • 기본적으로 현재 디렉토리(.)는 PATH에 포함되지 않는다. 이는 보안상의 이유로, 현재 디렉토리에서 의도하지 않은 실행 파일이 실행되는 것을 방지하기 위함.
  • 따라서 현재 디렉토리의 파일을 실행하기 위해서는 “./”을 명시 해줘야 함.
 

👉 export 사용법

🔹환경변수 확인

notion image
echo $PATH
를 실행하면 등록된 환경변수를 확인할 수 있다.
echo $PATH 를 실행하면 등록된 환경변수를 확인할 수 있다.
 

🔹 export 명령어의 역할

notion image
JavaScript
export 명령어는 셀 변수 또는 함수가 현재 셀 프로세스뿐만 아니라 모든 자식 프로세스에서 사용할 수 있도록 만든다. 
export 를 사용해야지 전역변수 = 시스템 변수가 된다.

하지만 컨테이너가 꺼지만 모든 게 날라간다는 단점이 있다.
이를 위해서 .bashrc에 저장해야한다.
 

🔹 export 사용

notion image
JavaScript
// .bashrc 파일에 새로운 환경 변수를 추가하는 명령어
echo 'export PATH=$PATH:/root/hello' >> ~/.bashrc
그래서 export명령어자체를 bashrc에 등록하는 문법이다
하지만 이대로 종료하게 되면 변경내용이 저장이 되지 않는다.
그래서 export명령어자체를 bashrc에 등록하는 문법이다 하지만 이대로 종료하게 되면 변경내용이 저장이 되지 않는다.
 
notion image
source ~/.bashrc
변경한 환경변수를 바로 적용하고 싶다면, 해당 명령어로 실행을 해야지 적용이 된다.
source ~/.bashrc 변경한 환경변수를 바로 적용하고 싶다면, 해당 명령어로 실행을 해야지 적용이 된다.
notion image
이제 어디서나 실행하면 확인할 수 있다.
이제 어디서나 실행하면 확인할 수 있다.
 

🔹개념정리

리눅스는 실행될 때 Path환경변수를 읽는다.
리눅스는 실행될 때 Path환경변수를 읽는다.
JavaScript
// 오늘의 수업 핵심
1. PATH -> 키워드 (정해진 환경변수)
		- PATH를 키워드로 설정은 어디서 했을까?
		- /etc/profile
2. 환경변수 생성 -> export 명령어
3. .bashrc -> 부팅시 읽어지는 파일
4. 부팅안하고 적용하고 싶다면? 어떤 파일이든!!
		- source 파일명
5. bash를 안쓰고, 다른 쉘 설치해서 쓴다면?
		- 그 쉘에 대한 프로파일 설정 파일이 만들어진다. 
		예) .zshrc
6. 파일 만들때
		- echo '내용' > 파일명 -> [ > ] 사
		- append를 하고 싶다면 ? [ >> ] 사용
 

👉 자 다시 합시다.

notion image
$PATH는 무조건 있다. 여기에 추가하면 된다.
$PATH는 무조건 있다. 여기에 추가하면 된다.
notion image