본문 바로가기
카테고리 없음

국비 - [cloud] docker

by Jeong.dev 2022. 9. 20.

■ 워킹 디렉터리 (작업 디렉터리) : 현재 프롬프트가 위치해있는 디렉터리

 

■ 경로 지정 

- 절대경로 : 가장 최상위부터 작성한다.

- 상대경로 : 현재 위치를 기준으로 작성한다.

 

■ 홈디렉터리

- cd ~ : 계정의 홈디렉터리로 이동

- 일반 사용자의 홈 디렉터리 : 루트 밑에 /home/ismoon (계정이름)

- root 계정의 홈 디렉터리 : 루르 밑에 /root

 

■ 리눅스 : 여러 사용자가 동시에 사용할 수 있는 운영체제

 

■ docker 

- 리눅스 컨테이너 기반으로 사용한다.

- 이미지만 있으면 빠르게 개발할 수 있다.

- 가상머신에 비해 용량이 작다

 

 

root@5987dbc81156:~# usermod -a -G sudo ismoon

ismoon 계정에다가 sudo라는 그룹을 넣어준다

 

PS C:\Users\suyeon> docker ps -a

PS C:\Users\suyeon> docker restart ubuntu

PS C:\Users\suyeon> docker exec -it ubuntu /bin/bash

 

PS C:\Users\suyeon> docker images

PS C:\Users\suyeon> docker tag ubuntu-linux:1 jeongsuyeon/ubuntu-linux:1.0

PS C:\Users\suyeon> docker push jeongsuyeon/ubuntu-linux:1

 

 

PS C:\Users\suyeon> docker start ubuntu-linux  : 도커 시작

PS C:\Users\suyeon> docker stop ubuntu-linux  : 도커 멈추기

PS C:\Users\suyeon> docker restart ubuntu-linux : 도커 재시작

PS C:\Users\suyeon> docker rm ubuntu-linux : 도커 삭제

PS C:\Users\suyeon> docker rm -f ubuntu-linux : 실행중인 도커 강제 삭제

 

PS C:\Users\suyeon> docker run -it --name ubuntu-linux ubuntu:latest

docker run 도커실행

-it 상호입출력 하겠다

--name ubuntu-linux 이름 ubuntu-linux로 지정해서

ubuntu:latest 얘를 실행해서(없으면 다운로드)

root@87c9b51b0b66:/# cd ~
root@87c9b51b0b66:~# ls
root@87c9b51b0b66:~# echo "Hello" > Hello.txt  : Hello.txt 파일 생성하고 파일 안에  Hello 문자 넣기
root@87c9b51b0b66:~# ls
Hello.txt
root@87c9b51b0b66:~# cat Hello.txt
Hello

root@87c9b51b0b66:~# ll
total 20
drwx------ 1 root root 4096 Sep 19 01:11 ./
drwxr-xr-x 1 root root 4096 Sep 19 01:10 ../
-rw-r--r-- 1 root root 3106 Oct 15  2021 .bashrc
-rw-r--r-- 1 root root  161 Jul  9  2019 .profile
-rw-r--r-- 1 root root    6 Sep 19 01:11 Hello.txt
root@87c9b51b0b66:~# exit


PS C:\Users\suyeon> docker images : 도커 이미지들 보기
REPOSITORY                 TAG           IMAGE ID       CREATED          SIZE
jeongsuyeon/ubuntu-linux   2.0           3029c8d4e6d4   21 minutes ago   77.8MB
ubuntu                     latest        2dc39ba059dc   2 weeks ago      77.8MB
alpine                     latest        9c6f07244728   5 weeks ago      5.54MB
tomcat                     8.5.72-jdk8   25c468c4fa62   11 months ago    545MB

PS C:\Users\suyeon> docker pull jeongsuyeon/ubuntu-linux:1.0 : 도커 이미지 pull 받기
PS C:\Users\suyeon> docker rmi $(docker images -q) : 모든 이미지 삭제하기
PS C:\Users\suyeon> docker container inspect mydb : mydb 컨테이너 상세보기
PS C:\Users\suyeon> docker image inspect ad13c30ec346 : ad13c30ec346 이미지 상세보기

-e : 컨테이너 환경변수

docker exec -it myweb /bin/bash
-it : 상호입출력 하겠다. myweb 컨테이너랑

docker cp C:\Users\suyeon\ROOT.war myweb:/usr/local/tomcat/webapps
C:\Users\suyeon\ROOT.war 파일을 myweb컨테이너 root//usr/local/tomcat/webapps 에 복사할꺼다

docker run -it --name boot-web -p 30028:8088 openjdk:11 /bin/bash

-p : 포트정보

/bin/bash : 기본설정 command /bin/bash로 생성하기

docker run -d --name boot-web -p 30028:8088 boot-web:1.0 java -jar /root/05_SpringBoot_MVC-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
-d : 백그라운드로 돌린다. (그래서 -it 필요없음 )
boot-web:1.0 생성하면서 java -jar /root/05_SpringBoot_MVC-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev 실행되게

docker logs boot-web : 로그 확인하기
docker logs -f boot-web : 로그 보여주고 구동하면 그때그때 실시간으로 로그 보여주기(ctrl + C 두번 눌러서 나오기)

docker run -it --name alpine-linux alpine:latest
apline-linux 이름으로 alpine:latest(이미지명) 최신버전 다운받아서 컨테이너 하나 만들기


 

■ 컨테이너가 삭제되면 데이터가 유지되지 않는다.

컨테이너 삭제 후 다시 만들때 

처음에 만들었던 컨테이너에 있던 파일 그대로 쓰고 싶을 때

 

방법 2가지

- 호스트와 디렉터리 공유(bind mount  바인드 마운트)

- 도커볼륨 사용하기(docker volume)

 1. 호스트와 디렉터리 공유

docker run -it --name alpine-linux -v C:\Users\suyeon\alpine_data:/root/data alpine:latest
-v 호스트와 디렉터리 공유하겠다.
C:\Users\suyeon\alpine_data : 호스트 경로
/root/data : 컨테이너 밑에 디렉터리 경로

: 기준으로 '호스트경로:컨테이너경로'

단점 : 공유하면 호스트의 내용으로 컨테이너의 내용이 덮어 씌워진다.
즉, 컨테이너에 기존에 있던 내용은 사라지고 호스트의 디렉터리로 동기화된다.

 


 2. 도커볼륨 사용하기
얘는 컨테이너에 있는 파일이 도커볼륨에 내용이 들어가게 된다.
즉, 컨테이너 기존내용 유지됨.
관리 도커에서 진행해서 관리포인트가 좀 줄어든다.

docker volume ls : 볼륨 목록 보기
docker volume create : 16진수로 아무이름으로 볼륨 만들기
docker volume create --name alpine-volume : 볼륨 이름 지정해서 만들기
docker volume rm 볼륨이름 : 볼륨 삭제
docker volume prune : 볼륨 다 삭제
docker volume inspect alpine-volume(볼륨이름) : 볼륨 상세정보 보기

docker run -it --name alpine-linux -v alpine-volume:/root/data alpine:lastest

docker run -d --name mydb -p 40000:1521 -e TZ=Asia/Seoul -v oracle_volume:/u01/app/oracle oracleinanutshell/oracle-xe-11g
볼륨과 컨테이너 경로 연결하기

: 기준으로 '볼륨이름:컨테이너경로'

 

docker run -it --name alpine-linux -v /root/data alpine:lastest
도커 볼륨명 안쓰고 컨테이너 경로만 쓰면 자동으로 도커볼륨 하나 만들어서 연결한다.

/ # ls -al /home/data : /home/data 밑의 파일들 보기
/ # cat /home/data/Hello.txt : 디렉토리 안옮기고 /home/data/Hello.txt 파일 출력

댓글