도커 설치

인프런 - 초보를 위한 도커 안내서 수강 중

  • toc

도커 설치

Windows환경에서 설치하기

도커는 기본적으로 Linux에서 지워하기 때문에 도커 Windows 버전은 가상머신에 설치됨

우분트 환경에서 설치하기

curl -s https://get.docker.com/ | sudo sh

ubuntu 유저 권한 추가하기

sudo usermod -aG docker ubuntu

permission denied 오류나면

sudo chmod 666 /var/run/docker.sock

experimental true로 설정하기

sudo nano /etc/docker/daemon.json

코드 추가

{
  "experimental": true
}

도커 엔진 재시작

sudo systemctl restart docker

도커 클라이언트는 도커 호스트에 명령을 전달하고 결과를 받아서 출력하는 구조이다

도커 명령어

run

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

컨테이너를 실행한다

옵션설명
-ddetached mode (백그라운드 모드)
-p호스트와 컨테이너의 포트 연결
-v호스트와 컨테이너의 디렉토리 연결
-e컨테이너 내에서 사용할 환경변수 설정
–name컨테이너 이름 설정
–rm프로세스 종료시 컨테이너 자동 제거
-it-i 와 -를 동시에 사용한 것으로 터미널 입력을 위한 옵션
–network네트워크 연결
  • run 명령어를 사용하면 사용할 이미지가 저장되어 있는지 먼저 확인
  • 이미지가 없다면 다운로드(pull)하고 컨테이너를 생성(create)하고 시작(start)

도커로 ubuntu 실행

도커가 기본적으로 제공하는 이미지로 ubuntu를 실행할 수 있다

docker run --rm -it ubuntu:20.04 /bin/sh
  • -it: 키보드 입력
  • –rm: 프로세스 종료 후 컨테이너 자동 삭제
  • 컨테이너 내부에 들어가 sh 실행
  • 현재 가상머신에 설치되어 있는 ubuntu를 실행하는 것이 아니라 도커로 이미지를 받고 컨테이너를 생성시켜 ubuntu를 실행시키는 것

백그라운드에 도커가 실행되고 있지 않다면 상태를 확인하고

$ sudo systemctl status docker

시작해준다

$ sudo systemctl start docker
$ sudo systemctl enable docker

또는

sudo service docker start

ps 명령어

docker ps -a

실행중인 컨테이너를 확인할 수 있고 -a 옵션을 주어 중지된 컨테이너도 확인이 가능하다

stop 명령어

docker stop [OPTIONS] CONTAINER [CONTAINER...]

실행중인 컨테이너를 중지한다

rm 명령어

docker rm [OPTIONS] CONTAINER [CONTAINER...]

종료된 컨테이너를 제거한다

logs 명령어

docker logs [OPTIONS] CONTAINER

컨테이너의 로그를 확인이 가능하다

  • -f 옵션을 주면 실시간 로그를 확인할 수 있다

images 명령어

docker images [OPTIONS] [REPOSITORY[:TAG]]

도커가 다운로드한 이미지 목록을 볼 수 있다

pull 명령어

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

이미지를 다운로드 한다. 기본적으로 run 시에 이미지가 없으면 이미지를 자동 다운로드 한다

rmi 명령어

docker rmi [OPTIONS] IMAGE [IMAGE...]

images 명령어롤 통한 이미지 목록에서 이미지를 삭제한다

network create 명령어

docker network create [OPTIONS] NETWORK
docker network create app-network

도커 컨테이너끼리 이름으로 통신할 수 있는 가상 네트워크 생성한다

network connect 명령어

docker network connect [OPTIONS] NETWORK CONTAINER
docker network connect app-network mysql

기존에 생성된 컨테이너에 네트워크를 추가한다

예시

docker run -d -p 8080:80 \
--network=app-network \
-e WORDPRESS_DB_HOST=mysql \
-e WORDPRESS_DB_NAME=wp \
-e WORDPRESS_DB_USER=wp \
-e WORDPRESS_DB_PASSWORD=wp \
wordpress

volume mount (-v) 명령어

-v /my/own/datadir:/var/lib/mysql

컨테이너를 삭제하면 모두 사라지기 때문에 -v 옵션을 주어 삭제되면 안되는 데이터를 보관, 불러올 수 있음

예시

docker stop mysql
docker rm mysql
docker run -d -p 3306:3306 \
-e MYSQL_ALLOW_EMPTY_PASSWORD=true \
--network=app-network \
--name mysql \
-v /my/own/datadir:/var/lib/mysql \
mysql:5.7

[참조] 인프런 - 초보를 위한 도커 안내서

끝!