docker 사에서 제공하는 docker architecture 그림.
이번 글에서는
docker build, docker pull, docker run 명령어와
container, image 등에 대해 알아보게 된다
출처 : https://docs.docker.com/get-started/overview/
아래 내용을 수행하다가
이와 유사한 에러가 나온다면
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
그냥 docker desktop 프로그램이 완벽하게 켜진 다음에 해보면 된다
간단하게 docker를 사용한다면
ubuntu부터 열어보자
docker hub에 ubuntu가 올려져 있다
이걸 가져와서 내 컴퓨터에서 Ubuntu를 열어보려 한다
https://hub.docker.com/_/ubuntu
사이트 오른쪽 하단 검은색 박스에 있는 docker pull ubuntu를 내 터미널에 쳐보자
Pull complete가 뜨면 가져오기 성공
pull이 성공하면 docker images를 입력했을 때 보인다
docker hub에 올라가 있는 건 docker image라는 것
만약 image를 삭제하고 싶다면 다음과 같이 입력한다
삭제가 되지 않으면 -f 옵션을 주고 강제로 삭제하면 된다
image ID를 입력할 때는 다 입력할 필요는 없고 앞단의 3-4글자만 입력해도 알아서 지운다
# docker rmi {docker image ID}
# docker rmi -f {docker image ID}
docker rmi 3f47
ubuntu image를 기반으로 container를 생성하는 방법
생성이 완료되면 해당 container의 ID가 출력된다
docker create -it ubuntu
container가 잘 생성되었는지 보고 싶다면...
-a 옵션을 붙이면 내 컴퓨터에 있는 모든 container를 한 번에 볼 수 있다
docker ps -a
만약 -a 옵션을 붙이지 않고 한다면 방금 생성한 container는 보이지 않는다
왜냐면 해당 container를 생성만 했지 켜지 않았기 때문.
그래서 켜져 있는 container만 보고 싶다면 docker ps 까지만 적으면 된다
container를 켜는 방법.
잘 켜졌다면 docker ps에서 보이지 않던 container가 이제는 잘 보인다
# docker start {container ID}
docker start b9a
해당 container 안으로 들어가서 ubuntu를 맛보자
들어가졌다면 ubuntu의 root 사용자로 / 경로에 접속했음을 볼 수 있다
# docker attach {container ID}
docker attach b9a
그냥 container 안에서 exit 치고 엔터
주의할 점은 container가 사라지진 않지만 꺼진다는 점
나중에 docker start하고 attach해야한다
docker ps -a를 해도 안 보인다
영영 되돌릴 수 없으니 주의하자
# docker rm {container ID}
docker rm b9a
container를 생성하고, 켜고, 접속하는 과정을 단순화하고 싶을 때 run을 사용하면 된다
생성할 때 사용했던 -it 옵션을 써주자
그럼 한 줄만에 바로 ubuntu 환경이 나타난다
실제로 이걸 가장 자주 쓰게 될 것이다
image ID를 적는 곳에는 image의 이름,
즉 docker images를 눌렀을 때 REPOSITORY에 나오는 것을 적어도 된다
# docker run -it {image Name OR image ID}
docker run -it ubuntu
docker run을 너무 많이 사용하면 해당 image를 기반으로 container가 여러 개 생성되어 복잡해진다
이번에 사용할 container는 잠깐 테스트하고 삭제할 용도로 가볍게 쓴다면
--rm 옵션을 주고 run 하면 된다
원래 exit을 하면 꺼진 상태로 container가 남아있지만
--rm 옵션을 통해서 생성된 container는 exit하면 아예 없어진다
# docker run -it --rm {image ID}
docker run -it --name myUbuntu ubuntu
docker ps를 했을 때 맨 마지막 컬럼에 해당 container의 이름이 뜬다
사실 container를 꼭 container ID로 다루지 않고 내가 지정한 이름으로 다룰 수 있다
--name 옵션을 적고 그 뒤에 이름을 적어주면된다
# docker run -it --name {name_blabla} {image Name OR image ID}
docker run -it --name myUbuntu ubuntu
저 명령어를 실행한뒤 터미널을 열어서 docker ps를 해보면
켜져있는 container로 방금 run한 container가 보이고
컬럼 맨 마지막 Names에 내가 적어둔 myUbuntu라는 이름이 보인다
그럼 docker attach 시에 내가 지정한 이름으로도 가능해진다
여기서 또 알 수 있는 건
container를 키면 동시에 여러 곳에서 접속할 수 있다는 점
run은 생성, 켜기, 접속을 모두 하기에 다시 이걸로 접속하면 안 되고
이 때는 attach로 열려 있는 container에 접근한다
머신러닝을 하는 사람이라면 꼭 알아야 하는 옵션
container가 gpu를 사용할 수 있도록 해준다