본문 바로가기

프로젝트 설정/기타

[Docker] Docker 사용기 (python)

반응형

설명은 잘되어있는곳이 너무 많다.

그저 이것은 도커 초보의 docker 사용내역이다.

1. image 파일 찾기

1.1. 도커 허브에서 원하는 이미지를 찾는다.

https://hub.docker.com/_/python?tab=tags&page=1&name=3.7 

 

python Tags | Docker Hub

 

hub.docker.com

1.2. Tag(버전) 선택하기

View Avilable Tags 등을 확인하여 version 및 상세정보 등등을 확인 후 내가 원하는 tag를 복사하자

2. image 다운 받기

2.1 docker pull

docker pull을 이용하여 이미지를 다운받는다.

# TEST 환경 Ubuntu 18.04.6 LTS
sudo docker pull repository:tag

# ex)
sudo docker pull python:3.7.12

# tag를 적지 않으면 가장 최신버전 latest 이 다운로드 된다.
sudo docker pull python

2.2 image 삭제

더보기

버전을 명시해서 다운 받아야하는데 모르고 tag 안적고 latest로 다운 받았을 경우....

또는 그냥 image가 필요없어졌을 경우

삭제 하자..

sudo docker rmi imageID

 

 

2.2.1. image 삭제 Error

혹시라도 image를 사용하고 있는 컨테이너가 있다면 삭제가 안되니 컨테이너를 꺼주자.

(근데 이런경우는 삭제를 안하는게 맞겠지..?)

 

Error response from daemon: conflict: unable to delete f48ea80eae5a (must be forced) - image is being used by stopped container c88049acf081

 

3. 컨테이너(container) 실행시키기

3.1. 다운로드 받은 이미지 확인

sudo docker images

sudo docker images 명령어를 통해 다운로드 받은 이미지 목록을 볼 수 있다.

여기서 자신이 필요한 이미지의 이름:tag 로도 들어갈 수 있지만 image id가 더 편하므로 image id를 본다.

3.2. 실행시킨다 (docker run)

sudo docker run [option] imageID|imageName[:version]

# IMAGE ID 로 실행시키기
sudo docker run 869a8debb0fd
# image ID가 겹치지 않는 정도로 적어주면 일부만 적어줘도 된다.
sudo docker run 869

# repository와 tag로 실행시키기
sudo docker run python:3.7.12

docker ps를 하였을 경우 현재 run 한것을 기준으로 image를 어떤걸 실행시켰는지 알려주기 때문에

번거롭더라도 repository:tag 를 추천한다. 나중에 image어떤거 사용했는지 좀 더 직관적으로 확인할 수 있다.
repoasitory가 install 되지 않은 경우 install작업이 진행된다.

3.3. 실행중인 컨테이너 확인

더보기

sudo docker ps [option]

sudo docker run [--name 컨테이너명] 이미지이름:버전 or 이미지ID

sudo docker ps -a 로 컨테이너가 잘 실행되고 있는지 확인 할 수 있다.

 

근데 나처럼 그냥 실행시키면 status가 Exited(0) 인 경우를 만날 수 있다. (3.4에서 계속)

 

3.4. 컨테이너 옵션줘서 실행시키기 ★ (bash, 터미널, 백그라운드, 포트)

그럴때 아래 사이트를 들어간다.

개발자가 처음 Docker 접할때 오는 멘붕 몇가지

 

개발자가 처음 Docker 접할때 오는 멘붕 몇가지 | Popit

이번 글은 Docker의 개념 보다는 Docker를 처음 접하게 되었을 때 혼란스러웠던 내용을 정리한 글이다. Docker 컨테이너를 사용하는 용도는 여러가지가 있겠지만 이 글에서는 개발자가 만든 애플리케

www.popit.kr

요약

더보기

Docker는 Virtual machine이 아니다!

명령을 실행하는 환경만 제공하고 그 명령을 실행할 뿐이다.

즉 docker ps 를 하면 나오는 command를 실행해줄뿐이다.

좀더 명확하게 알고 싶다면, docker exec 를 보면 조금 더 직관적으로 다가 오는듯 하다!

읽기 싫다면 그냥 -it (또는 -itd) 옵션을 준다.

  • i : Interactive 모드로 표준입력과 표준출력을 키보드와 화면을 통해 가능하도록 하는 옵션이다.
  • t:  텍스트 기반의 터미널(TTY)을 애뮬레이션해주는 옵션이다.
  • d: 백그라운드 모드 실행하는 옵션이다.
  • p 운영체제포트:컨테이너포트 : 포트 부여
# 바로 컨테이너 접속
sudo docker run -it --name test_container python:3.7.12
# 백그라운드 접속 (실행만)
sudo docker run -itd --name test_container python:3.7.12
# 포트부여 p 운영체제포트:컨테이너포트
sudo docker run -itd -p 3307:3306 --name test_container mariadb
  • 컨테이너에 접속된 상태

  • 백그라운드에서 돌고 있는 상태

  • 포트부여된 상태

4. 컨테이너 접속하기 (docker exec)

백그라운드로 실행시켰거나 실행한 컨테이너를 실행상태에서 빠져나왔을 경우 컨테이너로 다시 접속해야한다.

# Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
docekr exec -it containername|containerID|containerIDprat /bin/bash

docekr exec -it test /bin/bash
docekr exec -it d1377b28a725 /bin/bash
docekr exec -it d137 /bin/bash

기본적으로 컨테이너이름(or 컨테이너ID) 와 command를 적어주어야 한다.

컨테이너이름과 켄터이너ID는 겹치지 않는다면 

ubuntu 18.04 기준으로 /bin/bash로 하면 ubuntu 환경으로 들어가지며

python 하면 바로 python 환경으로 들어가진다.

각 원하는 command에 따라서 command를 다르게 작성해주면 된다.

여기서 또한 -it를 안써주면 "실행?"만 됨으로 들어가서 할수가 없다.

그러므로 들어가서 작업을 하고 싶은거라면 -it옵션을 주자

 

5. 컨테이너 나오기

Ctrl + D

 

6. 작업하기

마음대로 작업하면 된다..

 

6.1. ubuntu 컨테이너 내에서 vim 사용하기

vim을 사용하려고 했더니

bash: vim: command not found

가 떴다

vim이 기본적으로 안깔려져 있는것이다.

install 해주자.

root@d1377b28a725:~/# apt-get install vim
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package vim

또 에러가 떴다 E: Unable to locate package vim

apt-get update를 해주자..

apt-get update

잘 됨

 

 

7.  컨테이너 삭제하기

기본적으로 컨테이너를 삭제 하려면 컨테이너가 작동중이지 않아야한다.

7.1. 컨테이너 멈추기 stop

docker stop containerID|name

7.2. 컨테이너 삭제하기 rm

docker rm containerID|name

 

 

참조

 

반응형