[Docker] Docker에서 주로 사용한 명령어
지난 업무들에서 주로 사용한 명령어와 자잘하지만 자꾸 까먹을 수 있는 내용들을 좀 정리하고자 한다.
[ 많이 사용했던 명령어들]
사실 이미 잘 정리된게 많기도 많고 필요한건 그때그때 쓰면 되긴하지만
1. docker pull 레포명/이미지명:태그
docker build --tag 레포명/이미지명:태그 경로
docker push 레포명/이미지명:태그
- 이미지 받아오기
- 이미지 빌드하기. 경로는 빌드할 곳의 루트 디렉토리. 보통 . 을 이용해서 현재 경로에서 시작함
- 이미지를 레포지토리에 올리기.
- 만약 push하는 곳이 공개된 docker hub인 경우에는 계정명/이미지명:태그 로 빌드하고 push하면 된다
2. docker image ls (docker images)
- 받아와 로컬에 설치된 이미지들
3. docker ps (-a)
- 실행중인 컨테이너 정보 확인
- -a 옵션 붙이면 죽은 컨테이너까지 한번에 다 볼 수 있음
- --no-trunc 옵션을 이용해서 생략된 정보 다 볼 수 있음
4. docker exec 컨테이너 '실행할 명령어'
- 실행중인 특정 docker 컨테이너에 명령어를 실행시키고 싶을 때
- docker exec -it 컨테이너 '/bin/bash' 이런식으로 사용하면 interactive한 shell을 붙을 수 있음
- 만약 shell을 root로 열고싶으면 뒤에 -u root 이런식으로 유저명을 붙이면 된다
5. docker history "이미지명"
- 특정 이미지의 업데이트 내역을 볼 수 있음
6. docker inspect
- 도커의 이미지, 컨테이너 등에 대한 정보를 확인하고 싶을 때 사용
7. docker logs 컨테이너
- 컨테이너의 로그를 볼 수 있다
- -f 옵션을 이용해서 tail처럼 동작시킬 수 있다
- -t 옵션을 이용해서 timestamp를 찍을 수 있다
8. docker run
- 컨테이너 실행
- --restart 옵션을 이용해서 컨테이너가 죽었을 때 재시작을 어떻게 시킬 지 정할 수 있음
- -p 호스트포트:컨테이너포트 ---> 포트 포워딩 설정
- -e 환경변수 ---> 실행할 때 컨테이너에 환경변수를 설정할 수 있다
- -h 이름 ---> 컨테이너의 호스트네임 지정 가능
- -d 컨테이너를 백그라운드에서 실행시키기
- -v 볼륨 마운트가 필요할 때
추가로, Dockerfile 작성할 때 사용했던 것들도 간단하게
업무중에 이미지를 새로 만들거나 수정할일이 있어서 주로 사용했었다
1. FROM
- 베이스가 될 이미지
2. RUN
- 해당 이미지에서 실행할 커맨드
3. WORKDIR
- 작업의 루트 디렉토리를 지정
4. EXPOSE
- 해당 이미지에서 노출시킬 포트 번호를 지정
- 주의할점은 이거 한다고해서 포워딩이 되는건 아님 run 명령어에서 -p 옵션으로 따로 해줘야함
5. COPY
- 호스트의 파일을 이미지 안으로 가져오기 위한 커맨드
6. ENV
- 이미지의 환경변수 지정
7. ENTRYPOINT
- 이미지가 컨테이너로 시작될 때 '반드시' 실행될 명령어
- 사용자가 수정할 방법이 없음
8. CMD
- 반드시 실행되는것이 아니라, 사용자의 파라미터 입력에 따라 수정될 수 있는 명령어
- 예를들어 test라는 이미지의 dockerfile에 CMD ["ls", "-al"] 로 해뒀는데, docker run test echo "hi" 로 실행하면 ls -al 대신 echo 'hi'가 실행되는 식