반응형
1. 리눅스에서 Docker 설치하기
$ sudo apt update
$ sudo apt install docker.io # 설치
$ docker --version # 버전 확인
2. 명령 방법
- 항상 root 권한으로 docker <명령어> 형식으로 실행한다.
- docker 명령은 root 권한으로 실행해야 하기 때문에 일반 계정에서는 항상 sudo를 사용해야 한다. 아니면 아래 방법으로 root 계정으로 전환하거나 그룹에 포함해 root 권한을 부여해준다.
$ sudo su # root 계정으로 전환
$ sudo usermod -aG docker ${USER} # 현재 계정을 docker 그룹에 포함
$ sudo systemctl restart docker # 로그아웃한 뒤 다시 로그인
- Docker가 리눅스 기반이기 때문에 이미지를 생성할 때 Bash(Bourne-again shell)를 주로 사용하므로, 아래 Bash 문법을 참고할 필요가 있다.
$ echo "hello" > ./hello.txt # > : 출력
$ echo "world" >> ./hello.txt # >> : 출력 + 추가
$ cat < ./hello.txt # < : 입력
$ hello="Hello World" # $ : 변수 설정
$ echo $hello
$ sudo docker rm $(docker ps -aq) # $() : 명령 실행 결과를 변수화
$ sudo docker run \ # \ : 한 줄로된 명령을 여러 줄로 표현할 때 사용
-d \
--name hello \
busybox:latest
2. 주요 명령어
search : Docker Hub에서 이미지를 검색
$ docker search <검색어>
$ docker search ubuntu
push : 이미지 올리기
- 로컬에 이미지 데이터 저장: Docker 저장소(Registry) 서버도 Docker Hub를 통해 Docker 이미지로 제공되므로, 먼저 Docker 레지스트리 이미지를 받는다.
$ sudo docker pull registry:latest # Docker 레지스트리 이미지 다운
$ sudo docker run -d -p 5000:5000 --name hello-registry \ # registry:latest 이미지를 컨테이너로 실행
-v /tmp/registry:/tmp/registry \
registry
- 이미지를 올리기 위해서 태그를 먼저 생성한다.
$ docker tag <이미지 이름/아이디>:<태그> <Docker 레지스트리 URL>/<이미지 이름>:<태그>
$ docker tag hello:0.1 localhost:5000/hello:0.1 # hello:0.1 이미지를 localhost:5000/hello:0.1 태그로 생성
- push 명령어로 이미지를 개인 저장소에 올린다.
$ docker push <Docker 레지스트리 URL>/<이미지 이름>:<태그>
$ docker push localhost:5000/hello:0.1 // localhost:5000/hello:0.1의 이미지를 개인 저장소에 올림
pull : 이미지 받기
$ docker pull <이미지 이름>:<태그>
$ docker pull ubuntu:latest
images : 이미지 목록 출력하기
- -a 옵션을 사용하면 정지된 컨테이너까지 모두 출력하고, 옵션을 사용하지 않으면 실행되고 있는 컨테이너만 출력한다.
$ docker images
ps : 컨테이너 목록 확인하기
$ docker ps
$ docker ps -a
network ls: 네트워크 목록 확인하기
$ docker network ls
run : 컨테이너 생성하기
- -i(interactive), -t(Pseudo-tty) 옵션을 사용하면 실행된 Bash 셸에 입력 및 출력을 할 수 있다.
- --name 옵션으로 컨테이너의 이름을 지정할 수 있으며, 이름을 지정하지 않으면 도커가 자동으로 이름을 생성한다.
$ docker run <옵션> <이미지 이름/아이디> <실행할 파일>
$ docker run -i -t --name hello ubuntu /bin/bash # ubuntu 이미지를 컨테이너로 생성 후 ubuntu내 /bin/bash 실행
start : 컨테이너 시작하기
$ docker start <컨테이너 이름/아이디>
$ docker start hello
restart : 컨테이너 재시작하기
$ docker restart <컨테이너 이름/아이디>
$ docker restart hello
attach : 컨테이너에 접속하기
$ docker attach <컨테이너 이름/아이디>
$ docker attach hello
exec : 외부에서 컨테이너 안의 명령 실행하기
- 컨테이너가 실행되고 있는 상태에서만 사용할 수 있으며 정지된 상태에서는 사용할 수 없다.
$ docker exec <컨테이너 이름/아이디> <명령> <매개 변수>
$ docker exec hello echo "Hello World"
Hello World
stop : 컨테이너 정지하기
$ docker stop <컨테이너 이름/아이디>
$ docker stop $(docker ps -aq) # 모두 정지
$ docker stop hello
rm : 삭제하기
$ docker rm <컨테이너 이름/아이디>
$ docker rm $(docker ps -aq) # 모두 삭제
$ docker rm hello
$ docker rm <네트워크 이름/아이디>
rmi : 이미지 삭제하기
$ docker rmi <이미지 이름/아이디>:<태그>
$ docker rmi $(docker images -aq) # 모두 삭제
$ docker rmi ubuntu:latest # ubuntu의 latest만 삭제
$ docker rmi ubuntu # ubuntu 이름을 가진 모든 이미지 삭제
history : 이미지 히스토리 살펴보기
- Dockefile에 설정한 대로 히스토리가 생성된다.
$ docker history <이미지 이름/이미지>:<태그>
$ docker history hello:0.1
cp : 파일 꺼내기
$ docker cp <컨테이너 이름/아이디>:<경로> <호스트 경로>
$ docker cp hello-nginx:/etc/nginx/nginx.conf ./ # 현재 디렉터리에 nginx.conf 파일 복사
commit : 컨테이너의 변경사항을 이미지로 생성하기
- -a 옵션으로 커밋한 사용자와 -m 옵션으로 커밋 로그 메시지를 설정한다.
$ docker commit <옵션> <컨테이너 이름> <이미지 이름/아이디>:<태그>
$ docker commit -a "Foo Bar <foo@bar.com>" -m "add hello.txt" hello-nginx hello:0.2
diff : 컨테이너에서 변경된 파일 확인하기
- A는 추가된 파일, C는 변경된 파일, D는 삭제된 파일을 의미한다
$ docker diff <컨테이너 이름/아이디>
inspect : 세부 정보 확인하기
$ docker inspect <이미지 또는 컨테이너 이름/아이디>
$ docker inspect hello-nginx
Reference
반응형
'Tool > Docker' 카테고리의 다른 글
도커(Docker) 컨테이너 연결 - 링크, 네트워크, 앰배서더 (0) | 2024.01.19 |
---|---|
도커(Docker) 사용법 - 이미지 생성 방법 (feat. Dockerfile) (0) | 2024.01.18 |
도커(Docker)란? - 기본 개념 및 배경, 이미지와 컨테이너 의미 (0) | 2024.01.18 |