2015-02-02 3 views
2

저는 Docker를 처음 사용하고 Docker 컨테이너 내에서 개발할 수 있는지 (그리고 좋은 생각) 궁금합니다. 컨테이너를 만들고 bash를 실행하고 필요한 모든 것을 설치 및 구성한 다음 컨테이너 내부에서 개발을 시작하는 것을 의미합니다.컨테이너 안에서 개발하는 것이 가능합니까? Docker

컨테이너가 내 주 기계가됩니다 (CLI 관련 작업용). 이동 중에도 (또는 새 컴퓨터를 구입할 때) 컨테이너를 밀고 랩톱에서 가져올 수 있습니다.

이렇게하면 점 파일을 유지하고 동기화해야하는 문제가 분류됩니다.

나는 아직 도커를 사용하지 않았기 때문에 현실감이 있거나 피하기 (디스크 문제를 풀거나 타이밍 문제를 당기거나 푸시).

+1

블로그 게시물에 관심이있을 수 있습니다. http://nathanleclaire.com/blog/2014/07/12/10-docker-tips-and-tricks-that-will-make-you-singa-a- whale-song-of-joy/ –

+1

x2go + xubuntu와 x2go + xfce + debian/sid 기반의 도우커 컨테이너를 사용하여 GUI 개발 및 디버깅을 할 때 도구 나 라이브러리를 사용할 필요가 없거나 필요하지 않습니다. 직접 설치할 수 있으므로 cli만이 아닙니다. – ISanych

답변

2

예. 올바른 설정과 함께 좋은 생각입니다. 마치 가상 머신처럼 코드를 실행하게됩니다.

빌드 시스템을 만들기위한 Dockerfile 구성은 연마되지 않았으며 셸 변수를 확장하지 않으므로 사전 설치 응용 프로그램은 약간 지루할 수 있습니다. 반면에 새로운 사용자와 작업 환경을 만들기 위해 자신의 이미지를 만든 후에는 다시 빌드 할 필요가 없으며 run 명령의 -v 매개 변수를 사용하여 자신의 파일 시스템을 마운트 할 수 있습니다. 호스트 및 컨테이너 시스템에서 모두 필요하게 될 파일. 다목적입니다.

> sudo docker run -t -i -v 
/home/user_name/Workspace/project:/home/user_name/Workspace/myproject <container-ID> 
1

나는 contrarian을하고 나쁜 생각이라고 말할 것입니다. 컨테이너를 "오래 실행"상태로 유지하려고 시도했지만 수정했지만 실수로 삭제하거나 삭제했습니다.

내 생각에 컨테이너는 장기 실행 VM을위한 것이 아닙니다. 그것들은 단지 이미지의 실체를 의미합니다. 시작, 중지, 죽이고 다시 시작하십시오.

Alex가 언급했듯이, 확실히 가능하지만 제 생각에는 "Docker"방식에 반대합니다.

차라리에서 개발하는 VM을 만들 버추얼와 방랑을 사용하십시오. 개발을위한

+0

수정 사항을 외부에 성문화하거나 호스트 장착 볼륨을 수정하기 전에 빠른 테스트 목적을 제외하고 실행중인 컨테이너를 수정해서는 안됩니다. 이 규칙을 따르면, 실수로 분실되거나 삭제 된 컨테이너에 즉시 문제가 발생하지 않습니다. 당신이하지 않는다면 - 당신은 아마 도커 철학을 따르지 않을 것이고 다른 도구 (방랑제)가 당신의 필요에 더 잘 맞을 것입니다. –

+0

의도적으로'docker rm'을 사용하여 컨테이너를 제거해야합니다.내용 (심지어 수정 된 것)은 기본적으로 유지됩니다. 왜냐하면 나는 사람들이 데이터 손실이 기본이라고 생각하지 않기를 원했기 때문입니다. 아직도, 나는 거의 항상 버릇이없는 컨테이너를 제거하기 때문에 _ryan1234_에 동정합니다. – Andy

+0

나는 그 (것)들을 삭제할 결코 결코 의미하지 않으며 나는 VMs로 콘테이너를 사용하는 것을 결코 시도하지 않는다. 그러나 가끔은 당신이 거기에 들어가서 몇 가지 시도를하고, 당신이 한 일을 잊어 버리고, 사라지고, 고통을 느낍니다. – ryan1234

1

도커 용기가 매우 편리 할 수 ​​있습니다. 스택과 선호하는 IDE에 따라 Alex의 제안에 따라 편집 부분을 호스트 외부에 유지하고 호스트에서 컨테이너로 소스 디렉토리를 마운트 할 수 있습니다. 그렇게한다면, boot2docker를 사용하여 macos x에서 잠재적 인 성능 문제를 조심하십시오.

개발자 환경간에 동기화하기 위해 이미지를 푸시하는 작업을 많이 기대하지는 않습니다. IMHO는 Dockerfiles를 코드와 함께 유지하고 SCM 수단으로 동기화하는 것이보다 직접적인 방향입니다. 나는 또한 Makefile을 지원하여 이미지를 만들거나 컨테이너를 실행한다.

관련 문제