명령어

  • docker run ~: docker 호스트에 ~ 애플리케이션 인스턴스가 있다면 실행시키고 없다면 docker hub에서 이미지를 pull 하게 된다. (해당 명령어는 한번만 실행된다.)
    • -d: Docker 컨테이너를 백그라운드 모드로 실행
      • docker attach ~: 명령어로 포그라운드로 전환 가능
  • docker pull ~: docker hub에서 이미지를 가져와서 해당 docker 호스트에 미리 가져다 둔다 (나중에 run시 pull되는 시간을 절약할 수 있다) 뒤에 아무런 버전 표시가 없다면 최신 버전을 pull하게 된다.
  • docker ps: 실행되는 모든 컨테이너의 현재 상태나 컨테이너 이름등을 표시한다.
    • -a: 이미 멈췄거나 종료한 컨테이너까지 모두 출력
  • docker stop ~: 해당 이름 혹은 id를 가진 컨테이너를 종료한다.
    • docker stop $(docker ps -a -q): 모든 컨테이너 종료 docker ps -a -q 는 모든 컨테이너 이름을 반환 한다.
  • docker images: 혼재 호스트에 있는 이미지의 목록과 사용할 수 있는 여부와 사이즈를 화면에 출력한다.
  • docker rm ~: ~컨테이너 삭제 id 모두를 입력 할 필요없이 앞에서 부터 3글자만 입력해도 해당 id를 삭제하는 것이 가능하다.
  • docker rmi ~: 사용하지 않는 이미지 삭제
    • 해당 이미지가 특정 컨테이너에서 사용중(의존중)이라면 삭제 할 수 없다.
    • 중단되는 컨테이너가 없는지 살펴봐야 한다.
  • docker exec ~컨테이너 id: 실행 중인 컨테이너 안에서 명령 실행
  • docker inspect ~켄테이너 id: 컨테이너의 모든 세부 정보를 JSON 형식으로 출력
  • docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mycontainer: 실행 상태인 mycontainer의 ip 주소를 확인하는 명령어
  • docker logs mycontainer: mycontainer의 로그 상태를 표시하는 명령어 오류 파악시 주로 활용 

'Development > Docker' 카테고리의 다른 글

Docker 이미지  (0) 2023.07.01
Docker 컨테이너 웹 호스팅  (0) 2023.07.01
리눅스 가상 환경에서 Docker 설치  (0) 2023.07.01
Docker  (0) 2023.05.26

이미지

  • 컨테이너를 생성하는 데 필요한 모든 것을 포함한 패키지
  • 계층형 구조
  • docker hub에서 pull 할 수도 있고 직접 제작하여 사용하는 것 도 가능하다.
  • docker build 이미지 제작 명령어 (계층 순)
    • FROM: 기본 운영체제 선택
    • RUN: Docker가 특정 명령어를 실행하도록 하는 명령어
    • COPY: 로컬 시스템의 파일을 복사에 Docker 이미지에 넣는 명령어
    • ENTRYPOINT: 컨테이너가 작동할 명령어를 지정하는 명령어
    • CMD: 컨테이너가 시작될 때 자동으로 사용되는 명령어 설정
  • 이미지를 구축할 때마다 모든 계층을 캐시에 저장하기 때문에 다시 이미지를 구축할 경우 매우 빠른 속도로 구축할 수 있다.
  • 제작한 이미지에 리포지토리 태그를 붙이면 push 명령어를 통해 Docker Hub에 푸시 가능하다

(Docker 이미지 제작 과정)

$cat > Dockerfile
FROM ubuntu

RUN apt-get update
RUN apt install -y python3, python3-pip
RUN pip3 install flask
COPY app.py /opt/app.py

ENTRYPOINT FLASK_APP=/opt/app.py flask run --host=0.0.0.0

(생성한 이미지 docker hub에 올리기)

$sudo docker login
// username 입력
// passward 입력
$sudo docker build . -t {docker username}/my-simple-webapp
$sudo docker push {docker username}/my-simple-webapp

 

'Development > Docker' 카테고리의 다른 글

Docker 명령어  (0) 2023.07.01
Docker 컨테이너 웹 호스팅  (0) 2023.07.01
리눅스 가상 환경에서 Docker 설치  (0) 2023.07.01
Docker  (0) 2023.05.26

컨테이너 (image (OS, Develop tool))

  • 컨테이너의 목적: 운영 체제 호스팅이 아니라 특정 작업이나 프로세스를 처리하는 것 작업이 끝나면 컨테이너는 종료한다.
  • 이미지(program)를 실행시키는 환경
  • 표준 입력값을 수신하지 않기 때문에 콘솔에 연결해도 아무 입력값도 읽어 들일 수 없다 (비 대화형 모드로 실행된다)
    • 입력값을 받게 하려면 -it 옵션을 통해 주는 것과 받는 것이 가능하다
      • i: 입력값 주기
      • t: 가상 터미널 사용
  • 모든 컨테이너는 기본적으로 ip를 할당 받는다
    • 단 내부 ip이기 때문에 도커 호스트(도커 엔진) 통해서만 호스트 가능하다.
  • 컨테이너 작업 종료 시 따로 -v옵션으로 볼륨을 매핑 설정해주지 않으면 데이터는 휘발성으로 날라가게 된다.

Jenkins/Jenkins 를 사용한 간단 웹 호스팅 실습

 

1. jenkins/jenkins 포트 매핑 실행

2. VMware로 실행 중 인 가상환경의 ip주소 확인

3. vmware를 실행 시키고 있는 현재의 노트북에서 해당 ip로 접근 (-p 옵션으로 8080:8080 매핑 해주었기 때문에 가능)

4. 만약 컨테이너를 종료시킨다면 해당 작업 내용은 따로 볼륨을 잡아주지 않았기 때문에 모두 휘발된다.

https://github.com/jenkinsci/docker/blob/master/README.md

$sudo docker run -p 8080:8080 -v {경로}:/var/jenkins_home jenkins/jenkins

sudo docker run -p 8080:8080 -v /root/my-jenkins-data:/var/jenkins_home -u root jenkins/jenkins

(README.md 파일을 참고하여 포트 매핑, 볼륨 세팅을 하고 jenkins/jenkins를 실행시키는 명령어)

 

'Development > Docker' 카테고리의 다른 글

Docker 명령어  (0) 2023.07.01
Docker 이미지  (0) 2023.07.01
리눅스 가상 환경에서 Docker 설치  (0) 2023.07.01
Docker  (0) 2023.05.26

클릭 후 쭉 아래로 내려가서 해당 명령어 2줄만 실행 (해당 페이지 위에 적혀있는 모든 과정을 자동으로 해주는 명령어)

$ sudo docker version

명령어로 설치가 잘 되었는지 확인

https://hub.docker.com/r/docker/whalesay

간단한 이미지 불러오기 테스트

$ sudo docker run docker/whalesay cowsay Hello!

(해당 이미지에는 출력되지 않았지만 whalesay 이미지를 docker에서 pull해오는 과정이 존재한다)

'Development > Docker' 카테고리의 다른 글

Docker 명령어  (0) 2023.07.01
Docker 이미지  (0) 2023.07.01
Docker 컨테이너 웹 호스팅  (0) 2023.07.01
Docker  (0) 2023.05.26

도커란?

  • (환경 일관성)서로 다른 운영체제 환경에서도 가상 머신 위에서 컨테이너를 실행하는 방식으로 추가적인 환경 설정 없이 사용 가능 하게 만들어주는 컨테이너 기반의 오픈소스 가상화 플랫폼
  • 컨테이너: 코드와 모든 종속성을 패키지화하여 어플리케이션을 실행하는 데 필요한 모든 것을 포함하는 소프트웨어의 표준 단위

주의점

  • 컨테이너들은 OS커널을 공유하기 때문에 Windows 컨테이너를 Linux 호스트에서 실행하거나 그 반대는 불가능하다

등장 배경

  • 엔드 투 엔드 애플리케이션 스택 구축에 여러 가지 기술을 사용해야 할때 발생하는 호환성, 의존성 이슈를 해결하기 위해 탄생 특히 새로운 개발자가 팀에 합류할 시 수백 개의 명령어를 입력하여 환경을 갖추어야 하고 알맞은 운영 체제뿐 아니라 각 컴포넌트의 버전 또한 맞추어야 되는 번거로운 문제를 Docker 실행 명령어 하나면 해결 할 수 있다는 점에서 큰 의미가 있다.

'Development > Docker' 카테고리의 다른 글

Docker 명령어  (0) 2023.07.01
Docker 이미지  (0) 2023.07.01
Docker 컨테이너 웹 호스팅  (0) 2023.07.01
리눅스 가상 환경에서 Docker 설치  (0) 2023.07.01

+ Recent posts