docker - Error

darby·2022년 12월 10일

Error

목록 보기
4/5

Error 발생

  • docker exec -it 명령어를 사용했는데
  • contanier ~~is not running 컨테이너가 실행중이지 않다. 라는 에러 문구가 떴다.

해결과정

1️⃣

그래서 컨테이너 실행 시켰는데 드라이버가 끝점에서 외부 연결을 프로그래밍하지 못했습니다.에러문구를 띄움 친절하게도 userland 프록시 시작 오류: listen tcp4 0.0.0.0:3306: 바인드: 이미 사용 중인 주소 에러 메세지에 tcp에 이미 사용중인 주소가 있다고함

2️⃣

  • 3306 포트가 사용중에 있다고해서 터미널에서 사용중인 포트 검색해본 결과 위의 사진처럼 3306 LISTEN 사용중이라고 뜨고있다. 이게 먼가 생각해 봤는데 옛날에 mysql을 내 노트북에 설치를하였는데 이게 컴퓨터를 킬때마다 자동실행 되는것 같았다.
  • mysqld stop 명렁어 하거나, 임시 방편으로 kill 명령어로 해당 포트를 죽일수 있지만 , 아마 컴퓨터 재부팅하면 좀비마냥 다시 살아 날테니 다른 방법을 생각해 봤다.
  • 그래서 실행되고 있는 컨테이너를 확인해봤다

3️⃣


docker-compose ps 명렁어를 쳐봤더니 사진과 같이 에러 메세지를 띄었다.
이 메세지의 의미는 유저의 권한(사용자의 권한)이 없다는 뜻이다. 권한을 확인하고,
부여해보자

4️⃣

  • Docker socket 파일의 권환을 줘야 한다. 그 이유는 기본적으로 메인 도커 데몬(프로세스)와 통신하기 위해 사용된다. Docker socket은 Docker API의 진입점이다. 이 소켓은 기본으로 Docker CLI에 의해 도커 커맨드를 실행하기 위해 사용된다.
  • Docker socket 파일은 /var/run/docker.sock 에 위치한다.

  • srw-rw---- 사진처럼 이부분이 있는데 권환이 어떤게 부여 되었는지 나타내는 그림이다. 그리고 문단 ? 이라고해야하나 srw / rw / ---- 각각의 문단마다 권한이 표시되는데 그 문단을 나타내고 있는 뜻이있는데 따로 검색 해보길 바란다.
  • 빨간색 맨 뒤쪽에 --- 부분이 있는데 여기에 권한이 없다.
  • 일단 리눅스에는 퍼미션이라는 접근 권한을 사용한다. 하나의 시스템에서 작업을 하기에 각각 사용자마다 자기 권한이 필요하며 다른 사용자가 소유자의 허락없이 접근하여 삭제하고 수정한다면 문제가 있기 때문이다.
  • r = read(읽기) , w = write(작성하기) , execute(실행하기)
    위 사진 srw 에서 s는 파일타입이라는게 있는데 ,
    s로 시작하면, 네트워크 소켓의 파일을 의미한다.
    더 자세한건 따로 검색해보자

5️⃣

sudo chmod 666 명렁어를 통해서 권환을 부여해 줬다.

6️⃣

다시 docker-compose up 명렁어로 컨테이너를 실행해봤더니(올려놓았다) 실행이 잘 되었다.

  • stopping mysql-db ...done 이라고 써져있는데 멈쳐있어서 ctrl+c누르니 start로 바뀌였다 .

7️⃣

docker-compose ps 명렁어로 실행되고 있는 컨테이너를 확인해보고,
docker exce it 명렁어로 진입하여 잘 사용하였다.

0개의 댓글