당황하지말고 현재 사용중인 포트번호를 검색하자
netstat -lntp
현재 8080 포트가 8533이라는 PID를 가진 친구가 사용중인 것을 확인할 수 있다.
해당 친구를 죽여보자
kill -9 8533
그런후 다시 자바코드를 구동해보자 정상 실행되는것을 확인 할 수 있다.

오늘은 또 무슨 좋은 일이 ^^; ??
당황하지말고 현재 사용중인 포트번호를 검색하자
netstat -lntp
현재 8080 포트가 8533이라는 PID를 가진 친구가 사용중인 것을 확인할 수 있다.
해당 친구를 죽여보자
kill -9 8533
그런후 다시 자바코드를 구동해보자 정상 실행되는것을 확인 할 수 있다.
2020. 03. 13
이전 글에서는 Docker를 사용해 게스트 유저가 서버를 운영할 수 있는 가상 환경을 만드는 것을 했다. 그런데 이전 글을 잘 보면 Volume 설정을 하지 않아 컨테이너를 종료하면 컨테이너 내의 모든 작업 내역이 유실된다.
모든 데이터를 보존하려 아래와 같이 컨테이너의 루트 디렉터리를 호스트와 공유하여 데이터를 동기화해보는 방법을 시도할 수는 있겠지만,
docker run -dit -v ~/guest1:/ ubuntu:18.04
루트 디렉터리는 볼륨으로 바인딩 할 수 없다는 오류를 볼 수 있다.
docker: Error response from daemon: invalid volume specification: '/home/ubuntu/guest1:/': invalid mount config for type "bind": invalid specification: destination can't be '/'.
bind mount를 하거나 tmpfs mount를 해도 결과는 같다.
docker run -dit --mount type=bind,source=~/guest1,target=/ ubuntu:18.04
# or
docker run -dit --tmpfs / ubuntu:18.04
그렇다면 어떻게 해결할 수 있을까? Docker는 여러 명령어를 지원하는데 export와 import 명령어를 사용하면 이 문제를 어느 정도 해결 할 수 있다.
정확히 말하면 위의 방법들처럼 실제 데이터를 호스트와 공유하는 것이 아닌, 특정 시점의 컨테이너 파일 시스템을 파일로 저장하고 불러오는 방법이다.
먼저 컨테이너를 파일로 저장하는 방법은 아래와 같다. export 명령어를 사용하여 컨테이너의 파일 시스템을 guest1_export.tar 파일로 아카이빙 할 수 있다.
docker export [CONTAINER_NAME] > guest1_export.tar
그리고 import 명령어를 사용하여 다시 Docker 이미지로 불러올 수 있다. guest1_export.tar 파일을 사용하여 ubuntu:imported 이미지로 만드는 것이다.
docker import guest1_export.tar ubuntu:imported
이미지가 정상적으로 만들어진다면 아래와 같이 이미지를 실행해보자.
docker run -dit ubuntu:imported
정상적으로 실행되지 않고 아래와 같이 오류가 발생한다.
docker: Error response from daemon: No command specified.
그 이유는 우리는 컨테이너의 파일 시스템을 아카이빙 하고 다시 이미지로 만든 것이므로 Docker는 이 이미지의 엔트리포인트가 무엇인지 알지 못한다. 그래서 우리는 이렇게 만든 이미지를 실행할 때 엔트리 포인트를 직접 지정해주어야 한다.
아래와 같이 명령어 뒤에 엔트리포인트를 지정하면 정상적으로 컨테이너가 실행된다.
docker run -dit ubuntu:imported /bin/bash
먼저 아래의 명령어로 현재 Docker의 컨테이너를 확인해 봅니다.
copy bashadmin@myNAS:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
999999999999 strapi/strapi:latest "docker-entrypoint.s…" 2 months ago Up 25 hours 0.0.0.0:6650->1337/tcp strapi_strapi
999999999999 adminer:latest "entrypoint.sh docke…" 2 months ago Up 25 hours 0.0.0.0:6660->8080/tcp strapi_adminer
999999999999 postgres:latest "docker-entrypoint.s…" 2 months ago Up 25 hours 0.0.0.0:15432->5432/tcp strapi_postgres
999999999999 mongo:latest "docker-entrypoint.s…" 3 months ago Exited (0) 2 months ago strapi_mongo
999999999999 mongo-express:latest "tini -- /docker-ent…" 3 months ago Exited (143) 2 months ago strapi_mongo-express
999999999999 synology/docviewer:1.3.0.0125 "sh -c 'while true; …" 3 months ago Up 25 hours synology_docviewer_2
999999999999 synology/docviewer:1.3.0.0125 "sh -c 'while true; …" 3 months ago Up 25 hours synology_docviewer_1
이제 이 중에서 하나의 컨테이너(strapi_strapi)를 이미지로 만들어 보도록 하겠습니다. 명령어 형식은 아래와 같습니다.
docker commit [컨테이너명] [이미지명:태그]
copy bashadmin@myNAS:~# docker commit strapi_strapi test_strapi:1.0
이제 생성된 이미지를 확인 볼 수 있습니다. 먼저 명령 프롬프트에서는 아래의 명령어로 확인할 수 있습니다.
docker images 명령어로 현재의 이미지를 확인할 수 있습니다. 또한 다.
copy bashadmin@myNAS:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test_strapi 1.0 3a43b73d9e04 6 hours ago 1.15GB
postgres latest c5ec7353d87d 2 months ago 314MB
strapi/strapi latest 87ed59852c1d 2 months ago 997MB
또한 synology의 Docker에서도 확인할 수 있습니다.
test_strapi:1.0 이미지를 확인할 수 있습니다.내보내기를 선택하면 이미지를 따로 저장도 가능합니다.