이번 파이널 프로젝트에서는 프론트, 백 , 인프라 총 3개로 큰 범주를 잡고 하고싶거나 더 공부하고 싶은 쪽으로 담당하여 각자 공부하며 알려주는 방식을 채택하였습니다. 물론 프론트쪽을 담당한다고 해서 백이나 인프라를 아이에 안보는건 아니지만, 하나의 목표를 정해두고 공부하며 개발하면 더 좋을것 같다는 의견이 통하여 채택하게 되었습니다. 따라서 저는 인프라 쪽을 공부하고자 하여 해당 명령어를 정리해놓기 위하여 글을 작성하게 되었습니다.
저는 2019형 맥북프로를 사용중이며 VMware Fusion 에 Rockey linux 8.10 버전에 Docker를 올려서 연습중에 있습니다.
Docker 리포지토리 설치
dnf 유틸리티를 사용하여 도커 저장소를 Rockey Linux 서버에 추가한다.
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
필요한 패키지 설치
다음을 실행하여 최신 버전의 Docker Engine, containerd 및 Docker Compose 를 설치한다.
sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemd docker 서비스 시작 및 활성화
Docker 가 설치 되었다면 실행해줄 차례이다. Docker 의 상태를 확인하고 실행시켜준다.
sudo systemctl status docker
sudo systemctl --now enable docker
여기까지가 Rockey Linux 에 Docker 를 설치하는 방법이다. 아주 간단하다 !
Container 제어 명령어
컨테이너 내려받기
예시로 MySql 컨테이너를 받는다면 다음과 같이 적을 수 있다. latest 태그는 가장 최신 버전의 컨테이너 이미지를 가지고 온다. 만약 특정 버전의 이미지를 설치하고 싶다면 tag 뒤에 버전을 적어주면 된다.
# docker pull NAME[:TAG]
$ docker pull mysql:latest
# 특정 버전
$ docker pull mysql:8.0
컨테이너 실행
컨테이너 실행은 일반적으로 docker run 명령어를 사용하며 다음과 같은 형식을 가진다.
# docker run [OPTINS] IMAGE [COMMAND] [ARG...]
$ docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=1234 -d mysql
# 단순 실행
$ docker run -d --name mysql-container
# 포트 매핑과 함께 실행
$ docker run -d --name mysql-container -p 3306:3306 mysql
# 대화형 모드로 실행
$ docker run -it mysql bash
run 과 관련된 옵션은 아래와 같다.
-d , -detach | 컨테이너를 백그라운드 모드로 실행한다. 컨테이너 ID를 출력하고 즉시 터미널을 반환한다. |
--name | 컨테이너에 이름을 지정한다. 이 이름을 사용하여 컨테이너를 관리할 수 있다. |
-e, --env | 컨테이너 내에서 환경변수를 설정한다. |
-p, --publish | 호스트와 컨테이너 간의 포트 매핑을 설정한다. |
-v, --volume | 호스트와 컨테이너 간에 볼륨을 마운트 한다. |
--rm | 컨테이너가 종료될 때 자동으로 컨테이너를 삭제한다. 테스트나 임시 작업시 유용하다. |
-it | 컨테이너와 대화형 터미널을 연결한다. 일반적으로 -i 와 -t 를 함께 사용한다. |
-i, --interactive | 컨테이너의 STDIN 에 대화형 연결을 유지한다. |
-t, --tty | 가상 터미널을 할당한다. |
--entrypoint | 컨테이너의 기본 엔트리포인트를 덮어쓴다. 이 옵션을 사용하면 컨테이너 시작 시 실행되는 명령을 변경할 수 있다. |
--user | 지정된 사용자로 컨테이너 프로세스를 실행한다. |
--network | 컨테이너를 특정 네트워크에 연결한다. 네트워크 모드를 설정할 때 사용된다. |
--restart | 컨테이너가 종료될 때 재시작 정책을 설정한다. |
컨테이너 종료
주로 컨테이너 내에서 터미널을 통해 입력하는 경우가 생기는데 exit 과 Ctrl + P,Q 2가지로 나뉜다. exit 명령어는 컨테이너를 아예 종료하고 나오지만 Ctrl + P,Q 명령어는 현재 컨테이너 상태를 유지한 상태로 본인의 연결만 빠져나온다. 따라서 컨테이너를 종료 시키지 않고 백그라운드로 전환하고 싶을 때에는 Ctrl 을 누른 상태에서 P 와 Q 를 순차적으로 눌러서 빠져나온다.
# 컨테이너 종료
$ exit
# 컨테이너 나오기
$ Ctrl + P,Q
Container 관리 명령어
컨테이너 목록 확인
docker ps 명령어를 통해 현재 가동되고 있는 컨테이너의 정보를 출력한다.
$ docker ps
모든 컨테이너 목록 확인
docker ps 명령어는 가동이 중지된 컨테이너는 출력하지 않는다. 따라서 -a 옵션을 통해 만들어져 있는 모든 컨테이너 정보를 출력한다.
$ docker ps -a
컨테이너 재시작 및 연결
docker start 명령어를 통해 기존 실행이 중지된 컨테이너를 시작할 수 있다. 그 후 docker attach 명령어를 통해 해당 컨테이너에 접속한다.
$ docker start mysql-container
start 한 컨테이너 내부에 attch 를 통해 붙는다.
$ docker attach mysql-container
컨테이너 정지
docker stop 명령어를 통해서 현재 실행되고 있는 컨테이너를 구동 정지한다.
$ docker stop mysql-container
컨테이너 삭제
docker rm 명령어를 통해 실행을 중지 한 컨테이너를 컨테이너 목록에서 삭제한다. 삭제하지 않고 구동만 정지한 컨테이너는 스토리지 어딘가에 남아있기 때문에 용량을 차지한다.
docker rm -f 옵션을 통해 가동되고 있는 컨테이러를 한번에 정지 및 삭제도 가능하다.
$ docker rm mysql-container
$ docker rm -f mysql-container
컨테이너 목록에 있는 모든 컨테이너 삭제
컨테이너 목록에 있는 모든 컨테이너를 한번에 지운다. 모든, 강제 라는 용어가 들어가 있기 때문에 해당 명령어를 사용할 때는 주의하여야 한다.
$ docker container prune
Docker 이미지 명령어
모든 도커 이미지 목록
docker images 는 시스템에 설치된 모든 도커 이미지를 나열한다. 해당 명령어에 옵션은 아래와 같다.
# docker images [OPTIONS] [REPOSITORY[:TAG]]
$ docker images
# 도커에 설치된 이미지의 모든 정보 확인
$ docker images -a
# 이미지에 조건을 걸어 확인
$ docker images -f
# 이미지의 IDs 만 출력
$ docker images -q
'Linux' 카테고리의 다른 글
[Linux] 리눅스 기본 명령어 정리 (0) | 2024.07.05 |
---|