(부가정보) 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 |