계정을 하나 추가해서 docker ps 를 쓰니깐 권한이 없다고 뜬다

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permission denied

 

/var/run/docker.sock 에 권한이 없다는 듯...

 

$ sudo chmod 666 /var/run/docker.sock 

위 커맨드로 권한을 주자

ubuntu docker 에서 mongodb container 를 설치하고 python에서 pymongo로 db를 조금 만져보려고 한다.

 

Ubuntu => Docker

 

$ docker run -d --name mongodb -p 27017:27017 mongo

위 명령어를 실행하면

-d 백그라운드에서 동작하는

--name mongodb mongodb 라는 이름을 가지고

-p 27017:27017  컨테이너 내부외부를 27017 포트로 통신하는 (mongodb의 기본 포트이다) 

mongo container 를 실행한다.

 

만약 mongo image 가 없으면 자동으로 다운(pull) 받는다.

 

 

$ docker ps

위 명령어로 컨테이너가 제대로 실행됐나 확인해본다

mongo 이미지로 mongodb 라는 이름을 가진 컨테이너가 실행돼있다.

docker ps

 

 

웹브라우저에서 localhost:27017 로 접속해보자. 

localhost:27017

이렇게 뜨면 제대로 실행중이다.

 

 

 

 

Python 

이제 python 에서 mongodb 를 사용해보자.

 

$ pip install pymongo

mongodb 사용을 위해 pip로 pymongo 를 설치하고 코드를 작성하자

 

#db.py

from pymongo import MongoClient

client = MongoClient('mongodb://localhost:27017/')


db = client.newDB 			# db 를 하나 만들고
userCollection = db.user	# db 에서 collection 을 만든다.

# insert_one() 으로 db 를 추가
userCollection.insert_one({
    'name' : 'mik_a',
    'age'  : '100',
})

# find() 로 collection 에 저장된 데이터를 불러와서 출력한다
for i in userCollection.find() :
    print(i)

# collection 의 데이터를 전부 삭제한다.
userCollection.delete_many({})

 

출력

 

NoSQL DB인 mongodb 를 python 으로 간단하게 사용해봤다.

나는 컨테이너를 -v 로 옵션을 줘서 로컬 파일을 컨테이너 안에 공유하며 사용중이다.

그런데 가끔 git 이나 docker hub 등에서 image 를 가져온 경우 그 컨테이너 안의 파일이 필요한 경우도 있다.

혹은 컨테이너 안에 내 파일을 추가해야하는 경우도.

 

docker cp 로 하면 된다. 리눅스의 cp 와 사용법은 거의 동일하다.

 

 

컨테이너 안의 파일을 로컬 디렉토리로 복사해보자

$ docker cp container_name:/root/i_want_cp_this_file /root/local_dir

 

 

반대로 로컬 파일을 컨테이너 안으로 복사해보자

$ docker cp /root/i_want_cp_this_file container_name:/root/container_dir

 

'Dev > Docker' 카테고리의 다른 글

[Docker] ps command 전체 보기  (49) 2020.04.03
[Docker] sudo 없이 Docker 명령어 실행하기  (61) 2020.03.26

docker 의 container 를 보기위해 docker ps 명령어를 쓰면

 

$ docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
3516940c03f4        mongo:latest        "docker-entrypoint.s…"   16 hours ago        Up 16 hours         0.0.0.0:9001->27017/tcp   mongodb

 

이렇게 나오는데 COMMAND 가 길어서 짤리게 된다.

그걸 전체 다 보고싶을 때.

 

docker ps --no-trunc

$ docker ps --no-trunc

CONTAINER ID       IMAGE               COMMAND                         CREATED             STATUS              PORTS                     NAMES
3516940c03..중략   mongo:latest        "docker-entrypoint.sh mongod"   16 hours ago        Up 16 hours         0.0.0.0:9001->27017/tcp   mongodb

 

전체 COMMAND 를 볼 수 있다.

 

'Dev > Docker' 카테고리의 다른 글

[Docker] 도커 컨테이너 파일 로컬로 복사  (54) 2020.04.14
[Docker] sudo 없이 Docker 명령어 실행하기  (61) 2020.03.26

1. docker 그룹 만들기

$ sudo groupadd docker

 

 

2. user 에 1. 에서 만든 그룹 추가하기

$ sudo usermod -aG docker $USER

 

 

3. docker 서비스 재시작 혹은 재부팅 후 확인해보기

$ sudo service docker restart
$ sudo reboot

 

'Dev > Docker' 카테고리의 다른 글

[Docker] 도커 컨테이너 파일 로컬로 복사  (54) 2020.04.14
[Docker] ps command 전체 보기  (49) 2020.04.03

+ Recent posts