일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Kaggle
- python
- FDS
- 프로그래머스
- FastAPI
- GIT
- datascience
- DeepLearning
- pep8
- vscode
- NaverAItech
- Matplotlib
- GCP
- 코딩테스트
- docker
- 백준
- autoencoder
- leetcode
- rnn
- NLP
- PytorchLightning
- pytorch
- github
- 알고리즘
- GitHub Action
- wandb
- 완전탐색
- 네이버AItech
- torchserve
- Kubernetes
- Today
- Total
Sangmun
Docker 기본 명령어 정리 본문
Docker Image 와 Container
Docker Image는 컨테이너를 실행할 때 사용하는 템플릿과 같은 것. Read Only 한 특성이 있다.
Docker Container는 Docker Image를 활용해 실행된 인스턴스이다. Write가 가능하다.

Docker 기본 명령어
* docker search
docker search [option] TERM
docker serach 명령어를 실행해서 다운로드 받기를 원하는 이미지를 찾을 수 있다.
mysql 관련 이미지를 찾고 싶으면 docker search mysql명령어를 입력하면 된다.
다운로드를 받을때는 웬만하면 OFFICIAL한 이미지를 다운로드 받는게 좋다.

* docker pull
docker pull [option] image_name:tag
docker pull 명령어를 사용하여 docker image를 다운로드를 받는다.
docker pull mysql:8 이라고 명령어를 실행하면 mysql의 이미지 이름을 가진 tag가 8로 붙은 이미지를 내려 받는다.
image_name 앞에는 url을 명시하여 특정한 저장소(ex docker pull test.registry.net/mysql:8)에 저장된 이미지를 다운로드 받을 수 가 있는데 url이 명시가 되지 않는다면 docker hub에서 기본적으로 다운로드를 받는다.
* docker images
docker images [option] [repository[:tag]]
docker images 명령어는 다운로드 받아서 사용가능한 이미지가 어떤게 있는지 확인하는 명령어이다.
공식문서에는 repository와 tag를 추가로 입력으로 받지만 repository는 image name을 뜻한다.
docker images mysql:8이라고 입력을 하면 다운로드한 이미지 중에 image_name이 mysql인것 중 tag가 8인것만을 보여준다.
* docker run
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
다운로드한 이미지를 run을 해주는 명령어이다. 따라서 image 이름은 필수적으로 포함이 되어야 한다.
ex : docker run "이미지 이름:태그"
또한 실행할 수 있는 많은 옵션들이 있는데 예를 들어 아래와 같은 명령어를 입력한다 하면
docker run --name mysql-tutorial -e MYSQL_ROOT_PASSWORD=1234 -d -p 3306:3306 mysql:8
--name 컨테이너 이름
-e 컨테이너 안에서의 환경변수
-d demon (background) 실행
-p port forwarding : 왼쪽이 로컬 호스트의 포트를 의미하고 오른쪽이 컨테이너의 포트를 의미하며 두 포트를 연결지어 주겠다는 의미이다.
mysql:8 : mysql:8의 이미지를 실행하겠다는 의미이다.
* docker ps
docker ps [option]
docker ps로 현재 실행중인 컨테이너를 확인가능하다.

docker ps -a 는 작동을 멈춘 컨테이너도 보여준다.
* docker exec
docker exec [option] CONTAINER COMMAND [ARG...]
어떠한 서버에 ssh로 접속하는 것과 유사하며
보통 docker exec -it "컨테이너 이름(혹은 ID)" /bin/bash 와 같은 명령어를 사용해서 container내부에 접속하고 /bin/bash 명령어를 실행해준다.
좀 전에 생성한 mysql 서버에 접속을 해보면 아래와 같이 접속이 되고 mysql도 mysql -u root -p 명령어로 접속이 된다.


* docker rm
docker rm [option] container [CONTAINER...]
docker rm "컨테이너 이름(ID)" 으로 container를 삭제가 가능하다.
-f는 force라는 뜻으로 해당 옵션을 주면 실행중인 컨테이너도 삭제가 가능하다.
* docker run을 할때 로컬에 있는 파일을 컨테이너와 공유하는법
해당 방법을 Volume Mount라고 부르며 도커 컨테이너를 실행하는 호스트와 컨테이너의 파일 시스템을 연동한다.
즉 보통 container를 종료하고 다시 실행되면 container에 축적되었던 파일들은 전부 날아가는데 해당 방법으로 container들의 파일들을 보존시킬 수 있다.
docker run -it -p 8888:8888 -v /some/host/folder/for/work:/home/jovyan/workspace jupyter/minimal-notebook
라는 명령어를 실행하면 jupyter/minimal-notebook이라는 이미지를 실행하며 로컬호스트의 /some/host/folder/for/work 폴더와 container의 /home/jovyan/workspace는 연동이 된다.
* 추가적인 정보
Dockerhub에 공개된 모든 이미지를 다운받을 수 있음
따라서 pytorch랑 cuda 설정도 된 파일을 다운로드 받을 수 도 있으므로 빠르게 docker 환경으로 deeplearing 환경을 구성할 수 있다.
'개발' 카테고리의 다른 글
Google cloud Compute Engine에서 인스턴스 만들기 (0) | 2023.02.11 |
---|---|
Docker compose (0) | 2023.02.04 |
저작권에 대한 내용 정리 (0) | 2023.01.23 |
자연어 전처리 관련 유용한 패키지 (0) | 2023.01.22 |
python 코드 formatter black (0) | 2023.01.06 |