junha1125 2020. 2. 18. 19:34

공부하기 좋은 사이트 :  https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html 

기본 명령어 공부한 동영상 : https://www.youtube.com/watch?v=pMY_wPih7R0&list=PLEOnZ6GeucBVj0V5JFQx_6XBbZrrynzMh&index=3 

 

1. Docker의 기본 개념 

[Docker를 사용하는 이유]

정리 : 프로그램을 주고 받을 때, 그 프로그램을 위한 환경까지 같이 주자!! VMware와 같은 가상머신보다 훨씬 가볍게, 낮은 layer에서 동작한다. 

 

[Docker Architecture]

정리 : Registry는 docker hub이다. 그곳에 많은 이미지들이 저장되어 있다. 이미지를 pull해와서 나의 local docker에 저장해놓고, 내가 필요할 때만 image를 container에 올려서 새로운 os나 환경을 구동한다. 

왼쪽이 docker가 사용하는 Layers이고 오른쪽이 윈도우에서 VMware를 사용했을때 Layers모습니다. 

2. Docker 기본 명령어 

현재 내가 가지 도커 버전 검색

ps. nvidia-docker는 docker설치 이후에 설치할 것. 장점 : cuda설치 하지 않고 tensorflow-gpu이용 가능

       nvidia-docker2까지 설치할 것.

https://github.com/NVIDIA/nvidia-docker/

$ docker version
$ docker --version

나의 docker 사용 정보 확인 

$ docker info

docker 설치 후 설치가 잘 되었나 확인

$ docker run hello-world

내가 원하는 이미지 검색 - official로 다운 받기

또는 docker hub에서 검색하기 https://hub.docker.com/

$ docker search <imageName>

내 컴퓨터의 docker image가 무엇이 있는지 확인

$ docker images
$ docker image ls -a

내 컴퓨터의 docker container가 무엇이 있는지 확인

$ docker container ls -a
$ docker ps -a

docker 사용 중 메모리 정보 확인

$ docker system df

docker 이미지 hub에서 가져오기

$ docker pull <docker-image-name[:tag-name]>

Ex) $ sudo docker pull tensorflow/tensorflow:latest

 

이미지 container에 올리기 

$ docker [container] run -it --name <container name> [-p 8888:8888] <image name> bash

Ex) $ sudo docker run -it --name ubun18 ubuntu:latest bash

 

실행한 docker에서 원한는 명령어 실행하기 

이미지에서 원하는 프로세스만 실행하고 종료하기

$ docker run -it --name <container name> <image name> /bin/bash
$ docker run ubuntu:latest /bin/echo 'Hello world'

Ex) $ sudo docker run -it --name ubun18 ubuntu:latest /bin/cat /etc/hosts

 

bash상태에서 나가는 방법 2가지

$ exit   # container를 stop해버리기 
$ ctrl+P -> ctrl+Q(detach)  # container에서 detech

이미지,컨테이너 삭제하기

$ docker container rm <container code>
$ docker image rm <image code>

사용하지 않는 이미지, 컨테이너 삭제하기

$ docker image prune
$ docker container prune

컨테이너 Up Down상태 바꾸기.

$ docker container stop <container name>
$ docker container start <container name>

detect한 container 위에 다시 올라가기 

$ docker attach <up되어 있는 container name>

이미 실행되어 있는 container에서 원하는 프로세스만 실행하기 

$ docker exec -it <container name> /bin/cat /etc/hosts

container이름 바꾸기

$ docker container rename <old container name> <new container name>

 

3. 기본 docker 이미지 만들어 보기

$ docker run -it ubuntu:16.04 bash
# vi
| command not found
# apt update
# apt install vim
$ sudo docker container ls -q # container ID만 출력
$ docker commit <container ID> ub_with_vim:1

4. Directory 공유하기( --volume) (Bind mount a volume)

-v 옵션 이용하기 

$ docker run -it -v /home/junha:/host_home ub_with_vim:1 bash

 

 

Docker 공부 사이트  

https://subicura.com/2017/02/10/docker-guide-for-beginners-create-image-and-deploy.html 

https://www.sangkon.com/hands-on-docker-part1/ 

https://www.44bits.io/ko/post/how-docker-image-work 

 

이 정도 공부했으면... docker는 계속 파보면서 공부해야한다^^

 

앞으로 내가 공부할 것.

1. 초보 위한 도커 안내서 2강 3강

2. tensorflow pytorch 올려서 사용해보기