기존의 가상화 방식은 주로 OS를 가상화 하는 것
도커에서 가장 중요한 개념은 컨테이너와 함께 이미지라는 개념
1.1 맥에서 설치 하는 과정
Install Docker on MAC
1.2 도커 명령어 정리 참고 글
docker 설치 및 관리(명령어)
도커 사전설치
# 시스템 최신으로 업데이트
sudo apt update
# 사전 설치
sudo apt install apt-transport-https ca-certificates curl software-properties-common
레퍼지토리 키 추가
# Docker repository key add
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Docker repository add
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
도커 설치
# Docker 설치
sudo apt install docker-ce
# 버전 확인
sudo docker version
도커 설치 확인
sudo systemctl start docker ### docker 시작
sudo systemctl stop docker ### docker 종료
sudo systemctl status docker ### docker 상태 확인
>> yum -y update
>> yum -y install docker docker-registry
>> docker -v
>> sudo systemctl start docker
>> sudo systemctl enable docker
>> sudo systemctl status docker
docker exec -it {image Name} /bin/bash
참조 사이트 : https://gptjs409.github.io/infra/2019/11/02/docker-container-command.html
image pull
docker pull [이미지 이름]
#docker pull [image] : 이미지 다운로드
image 확인
docker images : '다운된 이미지 목록 확인'
Container Bash 접속
docker exec -it {container ID} /bin/bash
-it : interactive terminal 모드
-it는 익숙하지만 -itu 0를 사용할때도 있습니다.
ex. docker exec -itu 0 {컨테이너 이름} bash
container 무중단으로 빠져나오기 → CTRL + P,Q
컨네이너 실행/중지
docker start [컨테이너 이름(ID)] : 컨테이너 실행
docker stop [컨테이너 이름(ID)] : 컨테이너 중지
컨테이너 확인
# 실행 중
docker ps
# 종료된 컨테이너까지 확인 (all)
docker ps -a
# 컨테이너 ID만 확인
docker ps -q
# 컨테이너 한번에 끄기
docker stop $(docker ps -a -q)
컨테이너 생성/접속
docker run [image] : 컨테이너 생성 & 접속
# -it : 터미널 입력을 위한 옵션 + 컨테이너 안의 /bin/bash 실행
_______________________________________________________
자주 쓰는 옵션 docker run -p <host 포트 번호>:<컨테이너 포트 번호> -it --name [컨테이너 이름] [image] /bin/bash
1. -i → interactive 사용자가 입출력을 할수 있는 상태
2. -t → sudo ott 가상터미널 환경 에물레이션
3. -d → 백그라운드 실행
4. --name → 실행할때의 이름 설정
5. -v → /bin/bash → 메인 실행 파일을 지정(컨테이너 실행 파일 지정)
EX) **docker run -i -t ubuntu:14.04 /bin/bash**
호스트의 8080포트로 유입되는 트래픽은 컨테이너 내의 80번으로 유입
attach 와 run의 차이?
docker attach [컨테이너 이름(ID)] : 실행중인 컨테이너 접속
#docker start를 사용하고 bash로 접근하려면
: docker attach [docker image name]으로 bash에 접근한다.
#ctrl + p, q bash를 빠져 나오는 명령어
#→ docker는 유지한채 빠져 나오는 명령어(shell bash 단축키)
→ start 와 run의 차이는 직접 들어가서 실행을 하느냐와 그냥 해당 파일만 실행시키느냐의 차이 정도 입니다.
💡 run = pull + create + start
run은 해당 이미지를 pull, 컨테이너를 create, start 명령을 함축한다고 생각하면 쉽습니다.
exec
# 컨테이너에 특정 명령 실행
docker exec [옵션] [컨테이너 이름(ID)] [명령]
# > 특정 명령 실행을 위한 명령어지만 접속도 가능
_____________________________________________________
EX) docker exec -it [컨테이너 이름(ID)] /bin/bash
exec (docker exec [something]) : 해당 컨테이너의 bash, sh 실행
이미지 생성
docker commit [컨테이너 이름(ID)] [저장소이름]/[이미지 이름]:[태그] - 컨테이너 이미지화
[옵션]
-a, --author=””: 이미지를 생성한 사람의 정보를 설정
-m, --message=””: 변경 사항에 대한 로그 메시지를 설정
-p, --pause=true: 이미지를 생성하는 동안 컨테이너를 일시 정지
컨테이너 삭제
# stop 후 삭제할 것
docker rm {컨테이너 ID}
docker rm {이미지 ID}
컨테이너 권한 주기
sudo usermod -aG docker $USER # 현재 접속중인 사용자에게 권한주기
sudo usermod -aG docker MEME # MEME 사용자에게 권한주기
docker Container 실행 (PORT, Volume 추가)
docker run --name [container Name] \# 컨테이너 이름 설정
-p 8899:8899 # 포트포워딩 설정 8899 -> 8899 -it \
-v [OS SHARE PATH]:[DOCKER PATH][Image Name]# 볼륨설정
Docker inspect
docker inspect {container Name}
# -> docker file의 저장된 경로를 알 수 있음
# var/lib/docker/overlay2/...
Docker cp(복사)
# Container -> local
docker cp gpu_test:/tf/data/ ~/data/
# local -> Container
docker cp ~/data/solution.txt gpu_test:/tf/data/