도커

도커의 간단한 설명, 명령어

o_b:us 2022. 6. 22. 20:27

도커란 컨테이너 기반의 오픈소스 가상화 플랫폼이다.
다양한 이유로 계속 바뀌는 서버 환경과 개발 환경 문제를 해결하기 위해 등장했다.


//Dockerfile

FROM openjdk:8-jdk  //도커 이미지의 바탕이 될 베이스 이미지 지정

COPY Test.java .    //호스트 머신에 있는 Test.java가 컨테이너안의 디렉토리로 복사된다.
RUN javac Test.java //javac 명령어를 사용하여 Test.java를 컴파일

CMD ["java", "Test"]  //java 명령어를 사용하여 컴파일된 Test.
class 파일 실행

//출처: https://cornswrold.tistory.com/449

도커파일 : 도커에서 이용하는 이미지를 기반으로 하여 새로운 이미지를 Dockerfile이라는 스크립트 파일을 통해 나만의 이미지 설정 파일을 생성할 수 있다.
이미지 : 읽기/쓰기 엑세스 권한이 있는 인스턴스를 실행하는 컨테이너의 블루 프린트 이다.
컨테이너 : 이미지를 기반으로 생성되며, 애플리케이션이 구체화되어 실행되는 상태이다(이미지의 인스턴스).

즉 Dockerfile -> 이미지 -> 컨테이너

이미지 관련 명령어

docker images 도커 이미지 리스트 출력
docker build . 이미지 구축(Dockerfile이 있는데서만 실행)
docker stop 컨테이너 이름
docker --help
docker ps 컨테이너 리스트 반환
docker ps -a 가동중 컨테이너 리스트 반환
docker ps -all 모든 컨테이너 리스트 반환
docker run ImageID 이미지를 기반으로 컨테이너 만들어 실행

attached, detached, interactive

// 연결과 분리
attached모드-컨솔에 출력할 수 있음
detached모드-컨솔에 출력 불가능

docker run -p 8000:80 ImageID // -p는 포트를의미 호스트포트:도커포트 컨테이너 시작
docker run -p 8000:80 -d ImageID // detached모드(-d) 의미
docker start 컨테이너이름 // 멈춘 컨테이너 재시작
docker start -a 컨테이너이름 // 멈춘 컨테이너 attached모드(-a)로 재시작
docker attach 컨테이너이름 attach 하기
docker logs 컨테이너이름 과거로그 모두 출력

interactive모드 - 표준입력과 표준출력을 키보드와 화면을
통해 가능하다록 한다. 컨테이너나 컨테이너로 실행되는 애플리케이션에는 어떤 것도 입력이 불가능하기때문에 이 모드를 활성화 시켜줘야한다.
tty - 터미널을 활성화시켜 입력을 받을 수 있게 해줌
docker run -i -t imageID
docker run -it imageID 하나로 붙여서도 사용가능

`docker stop` 을 하고난 뒤 `docker start`만으로는 다시 입출력을 할 수 가없다. start는 detached모드 이기때문이다. 그렇기 때문에 -a 를 활성화시켜준다. `docker start -a -i 컨테이너이름` attached모드만 활성화시켜주면 딱 한번밖에 입력을 못받기 때문에 interactive도 활성화시켜주자.

제거하기, 상세내용 확인, 이름,태그 지정하기

docker rm 컨테이너이름 컨테이너 제거(여러개도 한번에 가능)
docker rmi imageID 이미지와 해당 이미지의 모든레이어들이 삭제된다.(명령어 사용 이전에 해당 이미지가 포함된 모든 컨테이너 제거필수 )
docker image prune 사용되지 않는 모든 이미지 제거
docker image inspect imageID 해당 이미지 상세내용 확인

docker cp dummy/test.txt 컨테이너이름:/폴더이름 dummy의 test.txt(모든파일을 원한다면 파일명 대신 . ) 파일을 컨테이너의/폴더로 복사하기

docker build -t 이름:태그 . 이미지의 이름과 태그 지정
docker run --name 지정할이름 imageID 컨테이너 이름 지정

// 종합적으로 써먹어보자

docker run -p 3000:80 -d --rm --name firstapp toy:v1 toy:v1의 이미지를 firstapp이라는 컨테이너로 detached모드로 만들고 중지될때마다 제거되게 만든다.

// 도커허브 시작하기

docker login 최초 1회 도커허브 로그인을 해줘야 push가능

docker build -t subo96/firstapp . //Dockerfile 있는데서 새로 빌드 또는
docker tag REPOSITORY이름:태그 subo96/firstapp //기존 2이미지 재사용해서 만들기

docker push subo96/firstapp 위 명령어 실행 후 원격허브에 push

docker pull subo96/firstapp 이미지 풀링하기

명령어가 뭔가 깃허브랑 비슷한거 같다..
개념,부족한거 추후 수정

'도커' 카테고리의 다른 글

도커 데스크톱 - access denied 에러  (0) 2022.09.07