Docker with GUI
: 도커를 사용하다 보면 GUI환경이 제공되지 않아 불편하거나 초기 GUI를 통해 무언가를 설정해야하는 경우가 있다. 이럴 때 유용한, 호스트의 GUI/sound를 공유하는 방법이다.
$ xhost +local:
$ docker run -it \\
-v /tmp/.X11-unix:/tmp/.X11-unix \\ # mount the X11 socket
-e DISPLAY=unix$DISPLAY \\ # pass the display
--device /dev/snd \\ # sound
--name jay \\
ubuntu:16.04 /bin/bash
$ xhost -local:root
도커와 Host PC간 파일 전송
Host -> Container
docker cp /path/foo.txt myContainer:/path/foo.txt
Container -> Host
docker cp myContainer:/path/foo.txt /path/foo.txt
현재 OS 이미지를 Docker로 저장
: 현재 실행중인 부트 이미지를 Docker 이미지로 추출하는 방법이다.
- 현재 OS를 tar 파일로 묶음
tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar(이름 지정) /
- docker 서버로 tar 파일을 복사 후 docker에 import
cat centos6-base.tar | docker import - centos6-base(원하는 이미지 이름)
- import 정상 확인
docker run -i -t centos6-base cat /etc/redhat-release
docker error response from daemon no command specified 오류 발생 시
: 위와 같은 오류가 발생하는 경우는 보통 Docker 이미지의 실행 시 수행할 COMMAND가 지정되지 않아서이다. 따라서 다음과 같이 docker import --change 'CMD ["/bin/bash","-c","exec /sbin/init --log-target=journal 3>&1"]' tljh.tar myDockerName:tag
CMD를 지정해주면된다.
: 위 방법으로 해결되지 않는 경우는, 발생원인이 위와는 다른 케이스이다. 나의 경우는 arm 아키텍쳐의 부팅 이미지를 Docker 컨테이너로 만들어 x86_64 아키텍쳐에서 실행하고자 하였을 때 위와 같은 오류를 접했다. 이는 Docker에 대한 이해가 부족했을 때 발생한 것이다. Docker는 어찌보면 컨테이너를 만들어 하나의 프로세스를 수행하는 것이지 가상화하는 것이 아니기때문에 다른 architecture의 부트 이미지를 돌릴수는 없다.
참고링크
'CICD > Docker' 카테고리의 다른 글
Docker - Docker 기본사항 (0) | 2021.02.14 |
---|