Docker
내 컴퓨터에선 되는데 왜 네 컴퓨터에선 안돼???? 를 해결해 준다.
로컬에 개발 환경을 구축하지 않고 도커 컨테이너를 개발환경으로 사용할 수 있다.
Docker
컨테이너컨테이너는 호스트 시스템의 커널을 다른 컨테이너와 공유합니다. 호스트 운영체제에서 실행되는 컨테이너는 코드와 모든 종속성을 패키지화하여 애플리케이션이 한 환경에서 다른 환경으로 빠르고 안정적으로 실행될 수 있게 해주는 표준 소프트웨어 장치입니다.
docker-oracle
Docker
이미지:Docker
레지스트리: $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] # 다운받은 이미지 삭제
삭제할 이미지를 사용하던 컨테이너를 먼저 삭제하고, 이미지를 삭제할 수 있다.
# 터미널 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 예제
(추가 예정~)