Docker(1)

서유진·2022년 10월 17일
2

server

목록 보기
1/3

Docker

  • 컨테이너 기반의 오픈소스 가상화 플랫폼,
  • 컨테이너 기술을 활용하는 앱의 개발, 제공 및 실행을 위해 설계된 소프트웨어 컨테이너 플랫폼

    내 컴퓨터에선 되는데 왜 네 컴퓨터에선 안돼???? 를 해결해 준다.
    로컬에 개발 환경을 구축하지 않고 도커 컨테이너를 개발환경으로 사용할 수 있다.

Docker 컨테이너

  • 하드웨어 가상화를 제공하는 VM과 달리 컨테이너는 '사용자 공간'을 추상화함으로써 경량의 운영체제 수준의 가상화를 제공
  • 컨테이너는 영구적이지 않으며 이미지로부터 생성
  • 컨테이너는 프로세스

    컨테이너는 호스트 시스템의 커널을 다른 컨테이너와 공유합니다. 호스트 운영체제에서 실행되는 컨테이너는 코드와 모든 종속성을 패키지화하여 애플리케이션이 한 환경에서 다른 환경으로 빠르고 안정적으로 실행될 수 있게 해주는 표준 소프트웨어 장치입니다.
    docker-oracle

Docker 이미지:

  • 컨테이너로 실행될 소프트웨어 모음
  • 이미지는 변경할 수 없으며, 이미지를 변경하려면 새로운 이미지를 생성

Docker 레지스트리:

  • 이미지를 저장 및 다운로드할 수 있는 공간

Doker 실습 해보기

개발 환경(VMware)

설치

실습 도움

	$curl -fsSL https://get.docker.com/ | sudo sh # docker 설치

	$sudo usermod -aG docker $USER # 현재 접속중인 사용자에게 권한주기

	$docker version # 잘 설치됐나 확인

순서대로 코드를 따라간다.

혹시 이 때 permission denied 가 발생하는 경우

	$sudo chown root:docker /var/run/docker.sock 

출처


이런 화면을 보면 잘 설치된 것이다.

명령어

	$docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]


이 외에도 다양한 도커 명령어는 여기에서 확인 가능하다.


예를 들어 ubuntu:18.04이 설치된 실제 환경에서 ubuntu:16.04의 환경을 구성하려면

	$docker run ubuntu:16.04

알아서 ubuntu:16.04 의 이미지를 찾아와 다운로드 하는 것을 확인할 수 있다. (똑똑이)
하지만 따로 명령을 주지 않았기 때문에 바로 종료되었다.

그렇다면 컨테이너 내부에 들어가 명령어를 직접적으로 입력하려면??
/bin/bash를 사용한다

	$docker run --rm -it ubuntu:16.04 /bin/bash


아까와는 다르게 바로 종료되지 않는 것을 확인할 수 있다.
빠져나올 때는 exit를 사용한다.

exit를 사용하지 않은 위 사진과 같은 상태에서, 새 터미널(터미널2)을 열어 실행된 도커 컨테이너를 확인할 수 있다.

	# 터미널 2
	$docker ps # -a

-a 옵션은 중단된 컨테이너까지 모두 보여준다.

ubuntu:16.04 이미지를 가진 도커 컨테이너가 실행중임을 확인할 수 있다.

	# 터미널 2
	$docker stop [container ID] # 컨테이너 중지

컨테이너를 중지하자 터미널 1

exit 명령어가 입력되었다.

중지된 컨테이너를 삭제하려면 어떻게 해야할까??

	# 터미널 2
	$docker rm [container ID] # 컨테이너 삭제


exited 되었던 우분투 컨테이너가 완전히 삭제되었다.


다운받은 이미지 확인하기

	$docker images # 다운받은 이미지 조회


이미지 별도로 다운받기

run vs pull
run은 컨테이너 시작과 동시에 받아지는거고, pull은 이미지의 최신 버젼을 받아오는 역할, 같은 태그지만 이미지가 업데이트 된 경우는 pull명령어를 통해 새로 다운받을 수 있습니다.

종료된 컨테이너를 삭제하고 이미지를 지울 수 있다.

	$docker rmi [image Id] # 다운받은 이미지 삭제


삭제할 이미지를 사용하던 컨테이너를 먼저 삭제하고, 이미지를 삭제할 수 있다.


log 확인하기

  	# 터미널 1
	$docker logs [OPTIONS] CONTAINER

	# 터미널 2
	$docker logs [OPTIONS] CONTAINER


실행중인 컨테이너 관리하기

	$docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

run -it vs exec -it
run은 새로 컨테이너를 만들어서 실행하고 exec는 실행중인 컨테이너에 명령어를 내리는 정도입니다.


mysql + Docker 예제
(추가 예정~)

profile
Backend Dev.

0개의 댓글