🟢 도커코드 실행
🔹 코드 명령어 & 설명
🟩 docker run hello-world
💚 해석
🟩 docker run -it ubuntu bash
💚 해석
: docker run -it ubuntu bash (ubuntu 이미지 안에 있는 bash 프로그램을 run을 하는데, interactive module로 해줘~
)
: C:\Users\dkddk>기반으로 로그인을 했는데…
root@34d998259871:/# (*바뀌었네??)
: 우분투를 가져와서 우분트 안으로 들어 간 후, bash라는 프로그램을 실행했으니, 컴퓨터에서 짧은 시간에 우분투를 설치하고 프로그램을 실행한 것임
🟩 uname
🟩 ls
🟩 exit
💚 해석
: 리눅스 운영체제임
: Bash는 ls 파일보기 한 것처럼 shell이라고 부르며, 손으로 명령어를 수행하는 리눅스 프로그램임
ex. uname
🟩 docker image ls
💚 해석
: docker image ls (도커, 이미지 보여줘~)
: hello-world의 이미지 버전은 5개월 전에 만들어졌고, 사이즈는 13.3KB
: Ubuntu의 이미지 버전은 13일 전에 만들어졌고, 사이즈는 72.8MB
🙉 Ubuntu 작은 이유?
-container technology에 있는 Ubuntu는 풀버전이 아님
-필요한 만큼만 가져온 것이므로 굉장히 작음
🙂 프로그램을 짤때, 아래에 있는 운영체제 host os를 사용함 (최소화 시킴)
🟩 ls –al
💚 해석
: ls –al (파일들을 다 보여줘~)
🟩 docker pull ubuntu
💚 해석
: docker pull ubuntu (도커 허브에서 registry에서 우분투 이미지를 Pull(가져옴)
: 도커에서 ubuntu를 실행 할 건데, ubuntu 이미지가 없으므로, registry에서 가져오고 싶을 때, 사용하는 명령이 pull임
🟩 docker container run -it -d --rm --name ubuntuos ubuntu:latest
💚 해석
: docker container run -it -d (도커야, container를 run실행해줘 interactive module이고, daemon이라고 그러는데)
: --rm --name ubuntuos ubuntu:latest (
서버 모듈로 뒤쪽의 백그라운드로 돌아갈 수 있게 해줘~)
🙂 우분투 운영체제의 latest 이미지를 가지고 실행하는 컨테이너는 우분투 os라고 이름을 부를것이고, 작업이 끝나면, 자동으로 지워지는데 백그라운드 모듈이 서버프로세스 처럼 돌아주고 interactive하게 해줘~ + 뒤쪽에서는 우분투 os가 돌고있음
🟩 docker exec –it ubuntuos /bin/bash
💚 해석
: 도커야~ 방금 실행 시킨 ubuntuos 컨테이너 안에 bin 밑에 bash 프로그램을 실행해줘
: 자세한 설명은 다음과 같음
-도커 실행해~ 명령 Execution, interactive module로 ubuntuos 안에 있는 bash를
-ubuntu 들어갔을 때에 디렉토리가 bin 이고 그 밑에 bash 프로그램이 있음
🙉 도커 컨테이너와 이미지를 직접 보고싶다면?
🟩 docker container ls
💚 해석
: 도커야, 지금 실행되고 있는 컨테이너들을 리스트 해줘~
🟩 docker image ls
💚 해석
: 도커야, 현재 가지고 있는 이미지들을 리스트 해줘~
▶ 이미지는 hello-world / ubuntu 등이 있음
▶ 우분투는 최신버전으로, 2b4cba85892a id를 가지고 있고, hello-world도 설치되어 있음
🟩 docker pull python
💚 해석
: 파이썬을 도커허브에서 가져옴
🟩 docker image ls
💚 해석
: 도커야, 이미지는 뭘가지고 잇니?
▶ 파이썬이 있고, 15시간 전에 만들어졌고, 사이즈는 919MB임
🙉 파이썬이 이미지가 있으니, 컨테이너를 띄어본다면?
🟩 docker container run -it -d --rm --name pythonclid python:latest
💚 해석
▶ 도커 컨테이너를 실행해줘 ➡ 손으로 타이핑 하는 interactive module야 / 서버처럼 뒤에 둥둥 떠있으면 좋겠고 ➡ 나중에 임무가 끝나면 자동으로 지워줘 ➡
내가 지금 띄울 파이썬 컨테이너는 (이미지로 부터 컨테이너를 씌운다고 했음) 파이썬 command interface daemon이야 ➡ 실행할 컨테이너를 만들 이미지는 파이썬 (지금 가져온) latest임
🟩 docker container ls
💚 해석
: 도커야, 가지고 있는 컨테이너들의 리스트 보여줘
▶ python3 & bash를 가지고 있음
▶ 이름을 편하게 부르기 위해 pythonclid / ubuntuos 의 name이 있음
🟩 docker exec -it pythonclid /bin/bash
🟩 uname
💚 해석
: 도커야, interactive module로 pythonclid 컨테이너에 bin 밑에 bash를 실행하고 싶어
: pythonclid와 bin 밑에 bash임
▶ 파이썬 이미지, 컨테이너는 리눅스 운영체제가 있고
파이썬이 동작하기 위한 것들을 함께 가지고 있음
▶ 이에 대한 설명은 도커허브에 가서 파이썬을 보면 있는데, infrastructure as code에 의해서 이미 파이썬을 수행하기 위해 편리한 운영체제 환경들을 이미지로 만들어 놓은 것을 가져온 것임
▶ 또한, uname을 작성하면, prompt가 변경됨
🟩 ls –al
💚 해석
▶ 모든 파일들이 보임
🟩 python
💚 해석
▶ 파이썬 버전은 3.10.3이고
▶ 리눅스 위에서 돌아감
▶ 파이썬은 vs코드나 파이참을 사용하지 않으면, 프롬프트 동작에서 사용할 수 있으며, print("Hello world")를 작성하면 interpreter 방식으로 해서 파이썬을 실행 할 수 있음
🙉 설치된 것을 지우려면?
(1) exit()
(2) 컨테이너 개수 & 도커이미지 확인
(3) 컨테이너를 죽이고, 이미지 삭제
🟩 exit()
💚 해석
▶ 리눅스에서 나감 (exit를 사용해 macos환경으로 돌아옴)
🟩 docker container ls (docker ps)
💚 해석
▶ 현재 컨테이너는 2개임 (pythonclid & ubuntuos)
🟩 docker image ls
💚 해석
▶ 도커 이미지는 5개가 있음
🙂 즉, 도커는...
: 운영체제도 순식간에 가지고 와서 실행할 수 있고
: 파이썬도 가지고 와서 실행할 수 있는 것을 볼 수 있음
: 실행 시킬 파이썬 코드를 짰으면, 파이썬 컨테이너를 가지고 온 것에 자신의 것을 넣어서 실행만 하면 됨
: 우분투 운영체제 위에서 돌아가는 프로그램을 가지고 있으면, 우분투 운영체제 위에서 프로그램을 실행만 하면 됨
: 직접 짠 파이썬 프로그램과 실행 시킬 우분투 운영체제를 이미지 위에 추가로 넣어서 배포 할 수 있고, pull해서 띄울 수도 있으므로, 매우 편리한 환경임
🙂 따라서 도커를 사용함으로써 필요한 환경을 set up하고 Ubuntu, Python, Hello-world 등 다양하기 대문에
실수를 하면 실수한 만큼 늘어남 ➡ 지우는 방법이 중요함
🔴 지울때는~
🟥 docker container stop pythonclid
▶ docker야 container를 stop해줘 이름은 pythonclid야
🟥 docker container ls
▶ 잘 지워졌는지 확인
🟥 docker container stop ubuntuos
▶ docker야 container를 stop해줘 이름은 ubuntuos야
🟥 docker container ls
▶ 잘 지워졌는지 확인
🟥 docker image ls
▶ 이미지는 5개임
🟥 docker image rm -f 2b4cba85892a
▶ 이미지를 리눅스에서 지우는 것은 rm임 (remove)
▶ 강제옵션 –f
▶ 지울 이미지 ubuntu인데, 이미지 id를 쓰는게 더 좋음 (2b4cba85892a)
🟥 docker image ls
▶ 잘 지워졌는지 확인
▶ 결과) Ubuntu가 없어짐
🟥 docker image rm -f 33ceb4320f06
▶ 결과) 파이썬도 없어짐
🟥 docker image rm -f feb5d9fea6a5
▶ 결과) image hello-world도 없어짐
🟥 docker image ls
🟥 docker container ls
▶ 결과) 이미지가 없다는 것 = 컨테이너도 없다는 의미
🚩 정리