본문 바로가기
Commands/docker

(docker) 기본 사용 명령

by 꼰대코더 2023. 8. 11.

Docker Image : 공식서버로부터 다운로드 또는 자작 Docker 화일로 부터 생성

 

(부가정보) docker 내에서 conda 의 가상환경 에서 인스톨한 라이브러리를 한꺼번에 설치하려면 requirements.txt 를 생성해서 pip install -r requirements.txt 를 실행한다.
그런데 최신 pip 에서 pip freeze > requirements.txt 를 실행하면 어떤 라이브러리는 @file .... 이라는 긴 폴더패스가 작성된다. 이는 docker 내에서 pip install 시 에러가 발생하는 원인이 된다.

이를 해결하기 위해 아래와 같이 해서 requirements.txt 를 만들기 바란다.

pip list --format=freeze > requirements.txt

 

docker hub 에서 ubuntu 를 가져오기 

$ docker pull ubuntu

 

 

docker 의 일생

화일(image)  - [ run ] -> 메모리로드(container) 후 자동 시작 -[ stop ]-> 멈춤(container) -[ start ]-> 재시작

                                                                                           -[   rm  ]-> 멈춤 & contaner 삭제 -[ rmi ]-> image화일 제거

 

 

자작 Dockerfile 를 build 해서 image 생성

$ docker build -t myapp:1.0 .

     -t : (--tag) <이미지의 이름 : 버젼>
          ※ 자신의 dockerhub 의 계정에 push 할 경우에는 <계정/myapp> 형식이로 해야 에러가 발생하지 않는다. 

          ※  추천 <프로젝트명/앱명:버젼> 
      . : Dockerfile 이 있는 폴더 
          ※ 화일명을 커스텀으로 할 경우 -f <커스텀명> .  으로 화일명을 지정해야 한다.

 

 

내 피시에 생성된 image 들을 보기

$ docker images

 

 

특정 image 를 기동시키기 -> container

$ docker run -d -p 80:80 --name app01 project/app:1.0 

     -d : (detach) 별도의 쉘에서 기동시킨다. 따라서 현재의 쉘은 계속해서 사용할 수 있다.

     -p :  호스트 ip 포트 : docker 내 ip 포트

     --name : container 이름을 붙인다.
   <project/app:1.0> : 이미 만들어둔 이미지명을 지정한다.

  ※ container는 image를 인스턴스화 한 것이기때문에, 동일 image를 가지고 복수의 container를 생성할 수 있다.
     따라서 다른 포트를 지정하여 두개의 서비스를 제공가능하다.

     $ docker run -d -p 81:80 --name app01 project/app:1.0

 

 

동작중인 container 에 들어가기

--name 명으로 들어가기 $ docker exec -it myweb /bin/sh
container id 로 들어가기
container id 는 docker ps 로 확인
$ docker attach 0b5aad08487b

 

 

동작 상태보기

동작중인 container 리스트 보기 $ docker ps
동작 / 정지중인 모든 container 리스트 보기 $ docker ps -a

 

 

container 시작, 정지시키기

시작 $ docker start container-id
$ docker start container-name
정지 $ docker stop container-id
$ docker stop container-name
일괄 정지 $ docker stop $(docker ps -a -q)

 

 

container 제거

제거
※ 일단 stop 한 다음
※ 강제 제거 : -f 옵션을 붙임
$ docker rm container-id
$ docker rm container-name
정지상태의 모든 container 를 제거 $ docker container prune
정지, 동작 관계없이 모든 container 를 제거 $ docker rm -f $(docker ps -a -q)

 

 

image 제거

제거
※ image-id 는 docker images 로 확인
$ docker rmi image-id

 

미아가 된 image 들 제거 
※ 같은 이미지명의 Dockerfile를 여러번 build할 경우 생김. 
container 에서 사용하지 않는 모든 image 들 제거
$ docker image prune

$docker image prune -a

 

'Commands > docker' 카테고리의 다른 글

docker-compose 개발 결과물을 서버에 릴리스  (1) 2023.12.09
docker-compose.yaml 알아보기  (0) 2023.12.09
Dockerfile 알아보기  (0) 2023.12.07
docker-compose 명령어  (1) 2023.12.07
docker & docker-compose 설치  (0) 2023.08.11