본문 바로가기
Kubernetes, Docker

[Docker] 도커 설치 및 실행 / 초보를 위한 도커 안내서 - 2일차

by 홍홍_ 2022. 11. 17.

1. 도커 설치하기

Linux

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

리눅스 배포판에 따라 도커 최신버전이 설치 된다.

sudo usermod -aG docker ubuntu

ubuntu 유저 권한을 추가한다.

 

MacOs or Windows

docker 메인 페이지

  • 도커 홈페이지에 들어가서 해당 도커를 설치한다.
  • 기본적으로 도커는 Linux만 지원하기 때문에 MacOS와 Windows에 설치를 할 때는 가상머신에 설치를 하게 된다.
  • 현재 내가 사용하는 환경은 Windows로 Hyper-V를 사용한다.
    ->쿠버네티스를 사용하면서 Hyper-V를 비활성화를 해두어서 아래와 같은 오류가 발생했다.
Hardware assisted virtualization and data execution protection must be enabled in the BIOS.

Windows 기능 켜기/끄기

  • Windows 기능 켜기/끄기에 들어가 Hyper-V 기능을 켜준다.
  • 위 방법으로 해결이 안된다면 PowerShell로 들어가 다음 명령어를 입력해준다.
bcdedit /set hypervisorlaunchtype auto
  • 나는 두 번째 방법으로 다시 Hyper-V를 활성화 시켰다.

Docker Desktop 메인

  • 도커를 실행

Docker Version 확인

  • cmd에 들어가 docker version 을 입력하여 도커의 버전을 확인할 수 있다.
  • Client 와 Server로 분리되어 버전을 확인할 수 있다.
  • 현재 명령어를 치는 것은 Client이고 보이지 않는 localhost에 Server가 실행 중이다.
    1. docker CLI는 docker host에게 명령을 전달
    2. host에 설치된 docker daemon에서 명령을 수행
    3. 수행 결과를 받아서 출력

2. 도커 명령어

run - 컨테이너 실행

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
-d detached mode (백그라운드 모드)
-p 호스트와 컨테이너의 포트를 연결
-v 호스트와 컨테이너의 디렉토리를 연결
-e 컨테이너 내에서 사용할 환경변수 설정
--name 컨테이너 이름 설정
--rm 프로세스 종료시 컨테이너 자동 제거
-it -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
--network 네트워크 연결

ubuntu 20.04 컨테이너 만들기

docker run ubuntu

  • run 명령어를 사용하면 이미지가 있는지 확인 후 없다면 다운로드(pull)하고 컨테이너를 생성(create)한 후, 시작(start)합니다.
  • 컨테이너가 실행 후 어떠한 명령어도 전달하지 않았기 때문에 컨테이너는 생성 후 바로 종료된다.
  • 컨테이너는 프로세스이므로 실행중인 프로세스가 없으면 컨테이는 종료

컨테이너 우분투 쉘 커맨드

  • 컨테이너에 명령을 주기 위해서는 --it 명령어를 입력해야 한다.
  • --rm을 사용하면 종료와 동시에 컨테이너가 제거 된다.

CentOS 실행하기

CentOS 쉘 커맨드

  • 도커는 다양한 리눅스 배포판을 실행할 수 있으며 동일한 리눅스 커널 버전을 사용해야 합니다.

웹 어플리케이션 실행하기

웹 어플리케이션 hello world 실행

  • -p 명령어를 사용하여 5678번 port를 연결

5678번 포트 접속

Redis 실행하기

redis 실행
1234번 포트 접속

  • windows에서 telnet 명령어를 사용할 수 없다고 나온다. 그럴 시, Windows 기능 켜기/끄기로 들어가 해당 기능을 켜주면 된다.

telnet 사용 설정

  • 기능을 켜준 후, 다시 해당 포트로 접속한다.

Redis 명령어 입력

MySQL 실행하기

mysql 실행

  • -d 명령어를 입력하여 백그라운드에서 실행

  • 3306포트가 사용 중이라 1234 번 포트로 실행

mysql 접속
워드프레스에 사용할 db 생성

  • 샐행중인 도커 컨테이너에 접속할 때 exec라는 명령어를 사용하여 접속한다.

워드프레스 블로그 실행하기

워드프레스 실행

  • 워드프레스 실행 시, database connection 오류가 난다면 데이터베이스와 연결이 안되었으니 데이터베이스의 포트번호를 3306이 아닌 다른 포트로 지정을 해두었다면 꼭 host.docker.internal:변경한포트번호 를 입력해주세요.

워드프레스 접속

ps 명령어

docker ps 명령어

  • docker ps : 실행중인 컨테이너 목록을 확인합니다.
  • docker ps -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]]
  • 다운로드한 이미지 목록을 확인

docker images 이미지 확인

pull 명령어

docker pull [OPTIONS] NAME[:TAG|@DIGEST]
  • 이미지를 다운로드

rmi 명령어

docker rmi [OPTIONS] IMAGE [IMAGE...]
  • 이미지를 삭제 /단, 컨테이너가 실행중이면 이미지는 삭제되지 않습니다.

network create 명령어

docker network create [OPTIONS] NETWORK
  • 컨테이너끼리 통신할 수 있는 가상의 네트워크를 만듭니다.

network 생성

network connect 명령어

docker network connect [OPTIONS] NETWORK CONTAINER
  • 생성된 컨테이너에 네트워크를 추가합니다.

network 추가
워드프레스 컨테이너에 네트워크 추가 후 run

  • 워드프레스와 mysql를 네트워크를 통해 연결

volume mount (-v) 명령어

  • 컨테이너가 사라지면 컨테이너에 남겨두었던 DB데이터가 전부 삭제된다.
    -> 컨테이너가 사라지더라도 DB같은 사라지면 안되는 데이터들을 남겨두기 위하여 volume 옵션을 지정하여 저장해두도록 한다.

댓글