Sangmun

Docker 기본 명령어 정리 본문

개발

Docker 기본 명령어 정리

상상2 2023. 2. 4. 20:33

Docker Image 와 Container

Docker Image는 컨테이너를 실행할 때 사용하는 템플릿과 같은 것. Read Only 한 특성이 있다.

Docker Container는 Docker Image를 활용해 실행된 인스턴스이다. Write가 가능하다.

docker Image와 Container

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
Comments