(docker를 사용할때 종종 나오는 exec명령어, it옵션, /bin/sh등에 대해서 먼저 다루고, 글 하단에서는 개발자들이 빈번히 사용하는 docker 명령어에 대해 정리 했습니다.)
docker exec
:exec는 컨테이너ID뒤에 나오는 command를 해당 컨테이너에서 실행하라는 명령어.
ex)docker exec alpine-test touch /tmp/execWorks
: alpine-test이름을 가진 alpine리눅스 컨테이너에 /tmp 경로에 execWorks 파일을 만들라는(touch) 명령어
ex)docker exec -it 컨테이너ID /bin/sh(or /bin/bash)
:-i옵션은 -interactive의 약자로서 c언어의 stdin(입력)을 open하라는 의미
:-t옵션은 tty의 약자로 가상콘솔을 의미한다.
:그래서 해석하자면 실행중인 컨테이너의 /bin/sh 즉 셸프로그램을 가상콘솔로 입력을 전달하여 사용한다는 의미. 쉽게 생각해 실행중인 컨테이너에 콘솔모드로 접속한다고 생각하면 된다.
*참고로, /bin/sh은 유닉스의 오리지널 셸이고 /bin/bash는 현재 리눅스의 표준 셸이라 생각하면된다. 도커의 alpine리눅스는 /bin/sh사용(또는 ash, /bin/ash 등)
도커 우분투 실행
ex)docker run -d -it ubuntu /bin/bash
:-d옵션은 백그라운드 실행, it는 입력 가능모드의 가상터미널, /bin/bash은 셸프로그램위치(리눅스는 셸 프로그램을 통해 부팅)
즉, it옵션을 가지고 /bin/bash에 connect하여 리눅스를 기동까지 하는 도커 명령어. OS를 기동시키지 않으면 컨테이너는 바로 excited된다.
도커 알파인리눅스 실행
ex)docker run -d -it --name alpine /bin/sh(또는 ash, /bin/ash 등)
그 외 docker 기본 명령어
이미지 빌드
docker build <옵션> <Dockerfile 경로>
:로컬PC에 도커이미지 생성
ex)docker build -t nginx:test-nginx .
:-t옵션을 주고 이미지명(위 nginx), 태그명(위 test-nginx, 보통은 버전명시)
:위에서 .은 현재 위치에서 Dockerfile을 빌드한다는 의미. 이때 파일명은 Dockerfile이어야함.(Dockerfile이 아닌 경우 아래 참고)
ex)docker build -t nginx:test-nginx /etc/abc
:/etc/abc 경로에 있는 Dockerfile을 실행
ex)docker build -t nginx:test-nginx -f /etc/abc/Docker-test
:-f옵션을 통해 경로뿐만 아니라 Docker-test라는 별도의 도커 파일명을 지정할 수 있음
도커 이미지 조회/삭제
docker images : 로컬이미지 목록 조회
docker rmi 이미지ID : 로컬이미지 삭제
도커 프로세스(컨테이너) 생성 및 실행
docker run <이미지:태그명>
ex)docker run -d -p 8080:80 nginx:test-nginx
: -d옵션은 백그라운드 실행, -p옵션은 "포트:컨테이너내부포트" 지정, nginx:test-nginx은 이미지명:태그명 지정
도커 프로세스(컨테이너) 중지/실행/삭제(stop/start/rm)
docker ps : 실행중인 프로세스 확인
docker ps -a : 전체 프로세스 확인(stop된 것 포함)
docker stop 컨테이너ID
docker start 컨테이너ID
docker rm 컨테이너ID : 컨테이너 삭제.(stop되어 있지 않으면 삭제 안됨)
docker rm -f 컨테이너ID : 컨테이너 강제 삭제.
docker rm -f $(docker ps -a -q)
: 모든 컨테이너 강제 삭제명렁어.(매우 위험할수 있는 명령어이므로 신중히 사용)
: -a는 all, -q는 컨테이너ID만 조회,
docker rm $(docker ps -q -f status=exited)
: 종료된 컨테이너만 종료, -f는 --filter의 약어
도커로그
ex)docker logs --tail 20 컨테이너ID
:해당 컨테이너의 최근 20줄 로그 출력
mysql 도커 실행
ex)docker run --name board_mysql -e MYSQL_ROOT_PASSWORD=1234 -d -p 3306:3306 mysql:latest
:--name옵션은 컨테이너명 지정, -e는 컨테이너 내부 환경변수 옵션으로 mysql의 root 비밀번호 지정
:마지막의 mysql:lastest의 경우 만약에 로컬에 이미지가 없다면 dockerhub에서 pull(latest가 안붙어 있다면 알아서 latest를 pull)
redis 도커 접속
ex)docker exec -it 컨테이너ID redis-cli
*접속 시 NOAUTH 에러가 발생하면 비밀번호가 걸려 있는것. 접속 후 "AUTH 비밀번호" 명령어를 입력
*redis cli 예시)keys * : redis key 목록 조회
'프로그래밍 > devops' 카테고리의 다른 글
git merge, rebase, squash 차이 (0) | 2023.01.29 |
---|---|
헤깔리는 git 명령어 정리 (0) | 2023.01.29 |
crond, crontab활용 (0) | 2022.12.25 |
리눅스 - 데몬(서비스), 프로세스 차이 (feat.systemd) (1) | 2022.12.22 |
리눅스 chown, chmod (0) | 2022.12.19 |