본문 바로가기

docker4

[Docker] Docker run 상태 유지하기 Dockerfile Script를 작성하면서 container를 띄울때 아무리 -d 옵션을 주고 --restart always 옵션을 주어도 무한 restart에 걸리기만 하고 container가 정상적으로 유지되지 않았다. 이유를 찾아보니, Docker는 앱의 실행과 배포에 초점이 맞춰져 있기 때문에 내부에서 실행중인 프로세스가 없는경우 자동으로 종료해 버린다. 그렇기 때문에 Container 내부에는 항상 어떤 프로세스가 돌고 있어야 한다..! 잘 생각해 보면, 일반적으로 Docker Image를 다운받고 실행해보면 항상 container 내부의 bash로 접속하는 경우가 많았는데, 이게바로 Dockerfile에 CMD로 "bash" 프로세스를 항상 실행시켜 유지하므로써, container가 종료되지.. 2021. 9. 1.
[docker] Dockerfile 빌드시 timezone 설정 때문에 설치되지 않는 오류 (tesseract) Linux 환경에서 apt-get install을 하다보면 가끔 Geographic area를 설정하라는 창이 뜰 때가 있다. 일반적인 설치 환경이라면 그냥 6.Asia -> 69.Seoul 을 직접 입력해주면 되지만 Dockerfile에서 스크립트로 build 할 때는, 이런 키 입력이 불가능하다. Dockerfile 빌드를 중단할 수 밖에없는 이 상황.. 찾아보니 해결방법은 두가지가 있다. 첫번째 방법은 Dockerfile에 아래와 같이 추가해서 명시적으로 timezone을 미리 설정해놓고 설치를 진행하는것이다. 나는 이 방법으로 해결하였다. # Dockerfile FROM ubuntu:20.04 ENV TZ=Asia/Seoul RUN ln -snf /usr/share/zoneinfo/$TZ /etc.. 2021. 8. 23.
[docker] unable to prepare context: unable to evaluate symlinks in Dockerfile path Error 정말 너무 간단하고도 어이없었던 에러이다. 이거때문에 시간을 뺏긴 내가 너무 바보같아서 포스팅한다.. 나는 Docker를 빌드할때 스크립트파일 이름은 당연히 내 마음대로 해도 되는 줄 알았다. docker build -t filename . 이런식으로 filename 부분에 스크립트 파일을 넣는 건 줄 알고 혼자 삽질했지만 스크립트파일은 Dockerfile 이라는 정확한 이름을 가지고 있어야한다.. 심지어 대소문자도 정확하게..!! 그래서 다들 해당 폴더로 이동하는 것을 강조했나보다. 해당 폴더에 있는 Dockerfile 이라는 이름의 스크립트를 알아서 실행하는거고 filename부분은 image이름이 들어가는 것 이었다..ㅎㅎ 앞으로 문서를 더 꼼꼼하게 읽어야 겠다.. ps. 이 작업을 하다보면 이미지.. 2021. 8. 23.
[docker] 실행중인 Container to Image 그리고 Port, Volume 추가 항상 기억이 안나.. 기록하는 습관을 가져야하는데, 아직 많이 부족하다. 이미 실행중인 docker Container에 포트를 추가해주려고 보니, 불가능하다는것을 깨닫고 방법을 찾아보았다. 결론은 현재 docker를 commit하여 Image로 저장한 후, 실행할때 Port 설정을 해주면 된다고 한다. docker container 종료 docker stop [container_name] docker ps -a 로 종료한 컨테이너의 ID를 확인한다. docker Container를 Image로 저장 docker commit [container ID] [Image Name] docker Container 실행 (PORT, Volume 추가) docker run --name [container Name] \.. 2021. 7. 13.