하면서 이런이런것을 공부했다[연구노트]/Git, Docker, Pytorch

[docker] docker 실습/ docker sudo 없이 실행하기

junha1125 2020. 2. 21. 01:55

1.원하는 docker ubuntu Image를 만들어보자

$ sudo docker run -it --name ubun18 ubuntu:latest bash
ls  
cat /etc/issue  
apt update  
apt install python   
python
sudo apt install python3-dev python3-pip
pip3 --help
pip3 install numpy
python3 --version
python3
exit
$ sudo docker start <container ID>
$ sudo docker attach <container ID>
$ sudo docker container ls -q # container ID만 출력
$ docker commit <container ID> ub_with_numpy:1

 

 

 

 


2.tensorflow를 실행해보자

$ sudo docker pull tensorflow/tensorflow:latest
$ sudo docker run -it tensorflow/tensorflow bash
$ docker run -it --rm -v /home/junha/Documents:/tmp -w /tmp tensorflow/tensorflow bash 

 

주피터 실행

$ docker run -it -p 8888:8888 tensorflow/tensorflow:nightly-py3-jupyter
( $ docker run --runtime=nvidia -it -rm -p 8888:8888 -p 6006:6006 tensorflow/tensorflow:nightly-gpu-py3-jupyter )
$ sudo docker run -it --rm -p 8888:8888 -p 6006:6006 --name tf16 tensorflow/tensorflow:1.6.0

tenserflow-gpu 실행 

$ sudo docker run --runtime=nvidia -it --rm -p 8888:8888 -p 6006:6006 --name tf16 tensorflow/tensorflow:1.6.0-gpu-py3

여기서 --rm은 container를 exit하면 자동으로 container를 삭제하는 옵션이다. 따라서 나는 아래와 같은 명령어를 많이 사용했다.

그리고 8888은 주피터를 위한 서버이고, 6006은 텐서보드를 위한 서버라고 한다.

$ docker run --runtime=nvidia -it -p 8888:8888 -p 6006:6006 --name tf16_rbox 6bdfac5fa12a

참고로 이미지는 나의 허브에 있는 이미지이다.

[sb020518/tf16_with_rbox         latest        6bdfac5fa12a     2.99GB]

 

 


3.sudo 없이 실행하기 

아래의 명령어를 순서대로 처준다. 

$ sudo groupadd docker
$ sudo usermod -aG docker $USER   #그대로 치기 users(whoami)로 바꾸지 마세요
$ reboot  # 컴퓨터를 한번 껐다 켜준다. 

이제 sudo 없이 docker가 실행이 될것이다. 하지만

WARNING: Error loading config file: /home/user/.docker/config.json - stat /home/user/.docker/config.json: permission denied 이게 뜬다면, 아래의 2줄을 터미널에 차근히 입력해준다. 

$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "$HOME/.docker" -R

 

 

 


4.docker image push하기

https://nicewoong.github.io/development/2018/03/06/docker-commit-container/

https://seulcode.tistory.com/227

정리 

우선 docker hub에 로그인 한다.

$ docker login

이미지의 이름(태그)를 바꾸어서 복제를 한다. 

$ docker tag <old image> <sb020518즉 userID>/<new docker-image-name[:tag-name]>

이제 hub로 push해보자

$ docker push <sb020518즉 userID>/<new docker-image-name[:tag-name]>

이와 같이 hub에 새로운 image가 생성된 것을 확인할 수 있다.