-
[Docker] 2 설치.컨테이너 실행CLOUD/Docker 2021. 2. 23. 17:28반응형
링크 : https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
1.도커 설치
$curl -fsSL https://get.docker.com/ | sudo sh
root권한 요구 후에 자동으로 설치되는 스크립트
도커 실행 : kernel 버전 3.10.x 이상 ( ubuntu 14.04이상)
Mac or Windows : docker for mac, windows설치하면 됨
2. 설치 확인
$ docker version
→ Client, Server정보 정상 출력되었다면 설치가 완료된 것.
→ 도커 커맨드를 입력하면 도커 클라이언트가 도커 서버로 명령을 전송하고 결과를 터미널에 출력해주는 형태
3. 컨테이너 실행
- 도커 실행 명령어
$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
다음은 자주 사용하는 옵션들입니다.
옵션설명
-d detached mode 흔히 말하는 백그라운드 모드 -p 호스트와 컨테이너의 포트를 연결 (포워딩) -v 호스트와 컨테이너의 디렉토리를 연결 (마운트) -e 컨테이너 내에서 사용할 환경변수 설정 –name 컨테이너 이름 설정 –rm 프로세스 종료시 컨테이너 자동 제거 -it -i와 -t를 동시에 사용한 것으로 터미널 입력(키보드 사용)을 위한 옵션 –link 컨테이너 연결 [컨테이너명:별칭] 4. ubuntu 16.04 container
- 컨테이너 생성
$ docker run ubuntu:16.04
(image pull→ container create→ start)
→ 이 커맨드는 명령어가 없어 실행중인 프로세스가 없기 때문에 컨테이너가 생성되자마자 종료됨
- 명령어와 함께 컨테이너 실행
$ docker run --rm -it ubuntu:16.04 /bin/bash
bash 쉘에 들어가 cat, ls, exit등 입력
5. redis container
- redis
: 메모리 기반의 다양한 기능을 가진 스토리지
: 6379포트. telnet 명령어로 테스트
:-p를 이용해 호스트의 1234포트를 컨테이너의 6379포트로 연결했고 localhost의 1234포트로 접속해 redis사용
~ docker run -d -p 1234:6379 redis
# redis test ~ telnet localhost 1234 > set mykey hello +OK > get mykey $5 hello6. MYSQL 5.7 container
: MYSQL_ALLOW_EMPTY_PASSWORD - 패스워드 없이 root계정 만들기 위함
docker run -d -p 3306:3306 \ -e MYSQL_ALLOW_EMPTY_PASSWORD=true \ --name mysql \ mysql:5.7 # mysql test $ mysql -h127.0.0.1 -uroot mysql> show database; mysql > quit
7. 도커 기본 명령어
- ps : 컨테이너 목록 확인
$ docker ps [OPTIONS]
기본 : 실행중인 컨테이너
-a ( --all) 옵션 : 종료된 컨테이너도 보임
- stop : 컨테이너 중지
$ docker stop [OPTIONS] CONTAINER [CONTAINER...]
컨테이너 아이디 입력하면 되는데 안겹치면 앞에글자만 입력해도됨.
- rm : 컨테이너 제거
$ docker rm [OPTIONS] CONTAINER [CONTAINER...]
*중지된 컨테이너 한번에 삭제 → $docker rm -v $(docker ps -a -q -f status=exited)
- images: 이미지 목록 확인
$ docker images [OPTIONS] [REPOSITORY[:TAG]]
사용하지 않는 이미지는 지우는것이 좋음
- pull : 이미지 다운로드
$ docker pull [OPTIONS] NAME[:TAG|@DIGEST]
run하면 이미지 없을때 pull로 다운 받음. pull을 또하면 최신버전으로 받음
- rmi : 이미지 삭제
$ docker rmi [OPTIONS] IMAGE [IMAGE...]
실행중인 이미지는 삭제되지 않음.
이미지-여러개의 레이어로 구성되어 있으므로 레이어가 모두 삭제됨
8. 컨테이너 둘러보기
- 컨테이너 로그 보기 (logs)
컨테이너가 정상적으로 동작하는지 확인할 수 있음
$ docker logs [OPTIONS] CONTAINER(${container_id})
--tail 옵션 : 마지막 10줄만 출력
-f 옵션 : 실시간으로 생성되는 로그 출력 ( ctrlc 종료)
주의 : 로그파일은 표준스트림으로 수집하며 json방식으로 어딘가에 저장되기때문에 용량 차지 생각해야함
- 컨테이너 명령어 실행하기(exec)
$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
run : 새로 컨테이너를 만들어 실행
exec : 실행중인 컨테이너에 명렁을 내리는 것
9. 컨테이너 업데이트
- 도커에서 컨테이너 업데이트 과정
새 버전 이미지 다운(pull) - 기존 컨테이너 삭제(stop, rm) - 새 이미지 기반 컨테이너 실행 (run)
삭제시 그동안 쌓아온 이미지 사라짐을 방지하기 위해서 데이터는 컨테이너 외부 스토리지 저장이 필수! – AWS S3나 데이터볼륨
-v 옵션을 사용해 디렉토리 연결
# before docker run -d -p 3306:3306 \ -e MYSQL_ALLOW_EMPTY_PASSWORD=true \ --name mysql \ mysql:5.7 # after docker run -d -p 3306:3306 \ -e MYSQL_ALLOW_EMPTY_PASSWORD=true \ --name mysql \ -v /my/own/datadir:/var/lib/mysql \ # <- volume mount mysql:5.7
디비 파일은 호스트의 /my/own/datadir에 저장되고 컨테이너를 삭제해도 사라지지 않음.
+ 추가 Docker Compose
.yml로 작성해 한번에 설정할 수 있는기능 알아보기
'CLOUD > Docker' 카테고리의 다른 글
[Docker] Dockerfile (0) 2021.08.10 [docker] 명령어 (0) 2021.07.19 [Docker] 3. 이미지만들고 배포 (0) 2021.02.23 도커란 무엇인가 (0) 2021.02.23