【Docker】 docker 실습/ docker sudo 없이 실행하기
(docker) docker 실습/ docker sudo 없이 실행하기
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가 생성된 것을 확인할 수 있다.