Docker 특강 정리
1. Docker 실습 환경
- https://kodkloud.com/p/docker-labs에 접속
- Enroll 버튼을 선택하여 등록
- https://kodekloud.com/courses/labs-docker-for-the-absolute-beginner-hands-on/ 에 접속 ( Docker 실습 URL)
- Start Course 버튼 클릭 시 Hands-On Labs 화면이 나옴
- Hands-On Labs 메뉴에서 Labs:Docker Run Commands 선택 후 나오는 Start Lab 버튼을 클릭
- 우분투 화면이 나오게 되면 성공
2. Docker 설치
실습에 이용할 KODKLOUD에서는 Docker가 자동으로 설치된 상태. 따라서 참고만 하자
- $ curl -fsSL https://get.docker.com/ | sh
- $ usermod -aG docker $USER ( sudo 없이 docker 사용하기 설정)
2-1. Docker 설치 확인
- $ docker version
2-2. Hello World 출력
- $ docker run docker/whalesay cowsay Hello-World!
이와 같이 출력이 되면 성공
3. Docker에 파이썬 이미지 다운 ( Pull 상태 )
- $ docker pull python:latest
3-1. 다운로드한 이미지들을 출력
- $ docker images
Ropository는 도커 이미지 이름 , tag는 다운로드할 때 : 뒤에 사용한 것
Image Id는 도커 이미지 ID , Created는 다운로드하고 지난 시간 , Size는 이미지 크기
4. Docker run ( run 상태 )
- 이미지를 run 시켜주면 container 형태로 변경해준다.
- $ docker run [options] [image name] [command]
option 은 대부분 -it를 사용 ( -i는 interactive mode , -t는 터미널 )
--name xx를 넣어주면 container의 이름이 xx가 된다. ( --name은 container 이름 설정! )
- $ docker run -it --name python3.8 python /bin/bash
- python 이미지를 이용하여 컨테이너 python3.8을 생성 ( 이슈가 생겨 java로 대체 )
컨테이너 내부 진입 시 $ 표시가 아닌 # 표시가 된다.
4-1. 현재 실행 중인 컨테이너 리스트 표시
새로운 터미널을 만들어 $ docker ps 입력 시 java 이름의 컨테이너 실행 중인 것을 확인
4-2. 컨테이너에서 나가기
# ls 후 # exit 하면 나가 짐.
- $ docker ps 하였을 시 java 가 뜨지 않는다. 하지만 이는 컨테이너가 사라진 것이 아닌 중지된 상태
4-3. 중지되어있는 컨테이너까지 모두 출력하기
- $ docker ps -a
5. 컨테이너 다시 실행하기
전에 docker ps -a로 확인한 container id를 복사하여
- $ docker start [Container ID] 입력 후 $ docker ps 입력 시 시작된 것을 확인 가능
- $ docker ps를 입력 시 container가 실행 중인 것으로 나오지만 #이 나오지 않는다.
이에 대해선 두 가지 방법이 있다.
- 컨테이너 밖에서 컨테이너 내부 명령을 실행하는 방법 : docker exec
- 컨테이너 내부로 다시 들어가는 이용 (프롬프트 이용) : docker attach
5-1. docker exec 사용
$ docker exec [Container name] ls -la
5-2. docker attach 사용
$ docker attach [Container name]
이후 # ls -la 입력 시 위와 같은 출력 창
5-3. 컨테이너에서 아래와 같이 mydata 폴더와 docker.txt 파일 생성
- # mkdir mydata
- # cd mydata
- # echo "hello world" > docker.txt
- # more docker.txt
- # ls - la
- # pwd
위 실습을 하게 되면 컨테이너 내용이 변경이 되었기 때문에 변경된 컨테이너를 새로운 이미지로 저장하여 백업시켜 놓을 수 있다.
-> 'commit'
6. commit
- $ docker commit [container name] [image name]
이후 docker images를 하게 되면 java라는 이미지 이름으로 생성된다.
7. stop / rm
만약 컨테이너를 삭제하려면 rm을 사용하게 된다. 하지만 실행 중인 상태라면 반드시 멈추고 삭제를 하여야 하므로
stop을 이용하여 컨테이너를 중지하고 rm을 이용해 삭제한다.