Docker 시작하기

3997 단어 dockerdocker

도커 설치하기

curl -s https://get.docker.com/ | sudo sh // 최신버전의 도커를 설치

sudo usermod -aG docker ubuntu // ubuntu 유저 권한 추가

설치확인

$ docker version 
Client: Docker Engine - Community 
 Azure integration  0.1.7 
 Version:           19.03.12 
 API version:       1.40 
 Go version:        go1.13.10 
 Git commit:        48a66213fe 
 Built:             Mon Jun 22 15:41:33 2020  OS/Arch:           darwin/amd64 
 Experimental:      true 
Server: Docker Engine - Community 
 Engine: 
  Version:          19.03.12 
  API version:      1.40 (minimum version 1.12)   Go version:       go1.13.10 
... (생략) 

Docker 기본 명령어

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

옵션 리스트

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

docker run --rm -it ubuntu:20.04 /bin/sh
  • 컨테이너 내부에 들어가기 위해 sh를 실행하고 키보드 입력을 위해 -it 옵션을 줍니다.
  • --rm 옵션이 없다면 컨테이너가 종료되더라도 삭제되지 않고 남아 있어 수동으로 삭제 해야합니다.

컨테이너는 stop상태가 있고 아예 꺼져있는 상태가 있고 실행중인 상태가 있습니다.

docker ps // 실행중인 컨테이너 목록을 확인하는 명령어

docker ps -a // 중지된 컨테이너도 확인하려면 -a옵션을 붙입니다.

docker stop [OPTIONS] CONTAINER [CONTAINER...] // 실행중인 컨테이너를 중지하는 명령어이며 하나 또는 여러개 중지할 수 있습니다.

docker rm [OPTIONS] CONTAINER [CONTAINER...] // 종료된 컨테이너를 완전히 제거하는 명령어

docker logs [OPTIONS] CONTAINER // 컨테이너가 정상적으로 동작하는지 확인하는 좋은 방법은 로그를 확인하는 것입니다. 기본 옵션과 -f, --tail 옵션을 살펴봅니다.

docker images [OPTIONS]REPOSITORY[:TAG]] // 도커가 다운로드한 이미지 목록을 보는 명령어

docker pull [OPTIONS] NAME[:TAG|@DIGEST] // 이미지를 다운로드하는 명령어
ex) docker pull ubuntu:18.04

docker rmi [OPTIONS] IMAGE [IMAGE...] // 이미지를 삭제하는 방법입니다. images 명령어를 통해 얻는 이미지 목록에서 이미지 ID를 입력하면 삭제가 됩니다. 단 컨테이너가 실행중인 이미지는 삭제되지 않습니다.

docker network create [OPTIONS] NETWORK // 도커 컨테이너끼리 이름으로 통신할 수 있는 가상 네트워크를 만듭니다.

docker network create app-network // app-network라는 이름으로 통신할 네트워크를 만듭니다.

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

docker network connect app-network mysql // mysql 컨테이너에 네트워크를 추가합니다.

Docker로 MySQL 실행하기

docker run -d -p 3306:3306 \ 
  -e MYSQL_ALLOW_EMPTY_PASSWORD=true \   --name mysql \ 
  mysql:5.7 

MySQL 데이터베이스를 실행

docker exec -it mysql mysql 
create database wp CHARACTER SET utf8; 
grant all privileges on wp.* to wp@'%' identified by 'wp'; flush privileges; 
quit 

exec 명령어

  • exec 명령어는 run 명령어와 달리 실행중인 도커 컨테이너에 접속할 때 사용하며 컨테이너안에 ssh server등을 설치하지 않고 exec 명령어로 접속합니다.

mysql을 지우고 다시 띄우면 어떻게 될까?

컨테이너가 가상의 환경에 생성되어있는데 그 가상의 데이터도 컨테이너가 종료될때 같이 없어짐

-v /my/own/datadir:/var/lib/mysql : 해당경로에 연결을 해주겠다.

docker stop mysql 
docker rm mysql 
docker run -d -p 3306:3306 \ 
  -e MYSQL_ALLOW_EMPTY_PASSWORD=true \ 
  --network=app-network \ 
  --name mysql \ 
  -v /Users/subicura/Workspace/github.com/subicura/docker-guide/ch02/mysql:/var/lib/mysql \   mysql:5.7

좋은 웹페이지 즐겨찾기