Docker?

Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징 할 수 있는 도구

Docker를 사용하는 이유

애플리케이션을 환경에 구애 받지 않고 실행가능


Docker 설치

저는 우분투 환경에서 진행했습니다.

~$ sudo yum -y install docker

버전확인

~$ docker -v

Docker 이미지 받아오기

이미지는 어떤 애플리케이션을 실행하기 위한 환경입니다.

이미지를 pull 명령어를 통해 dockerhub 에 있는 이미지를 받아올 수 있습니다.

~$ docker pull [저장소 이름]:[태그명]

Docker hub > centos 에서 이미지를 받아오기

~$ docker pull centos:latest

Docker 이미지 확인

해당 명령어를 통해 현재 사용할 수 있는 이미지를 출력합니다.

~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 0d120b6ccaa8 3 weeks ago 215MB


이미지를 기반으로 프로세스 시작하기

docker run -it [저장소 이름]:[태그명] [커맨드]

위에서 받아온 centos 이미지에서 bash 실행

~$ docker run -it centos:latest bash
[root@d40d7eadb298 /]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)

ps명령어를 통해 컨테이너가 실행 중임을 확인 할 수 있습니다.

~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d40d7eadb298 centos:latest "bash" About a minute ago Up About a minute vibrant_blackwell


Docker 이미지 생성해보기

centos 환경 + gcc, gcc+ 설치하는 이미지를 생성해보겠습니다.

폴더 만들기

~$ mkdir centos_gcc
~$ cd centos_gcc

Dockerfile 생성

~/centos_gcc$ vi Dockerfile

FROM centos:6
RUN yum -y install gcc \
&& yum -y install gcc-c++
ENTRYPOINT ["/bin/bash"]

Dockerfile로 이미지 빌드하기

~/centos_gcc$ docker build -t centos:gcc .

빌드 후 images 명령어를 통해 생성된걸 확인 해 볼 수 있습니다.

~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos gcc 32da4757a949 13 seconds ago 640MB

생성한 이미지를 통해 컨데이너를 실행해 봅시다. gcc도 잘 설치된걸 확인 할 수 있습니다.

~$ docker run -it centos:gcc
bash-4.1#
bash-4.1# gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)


Docker Hub 에 올리기

docker계정이 있다는 하에 진행

docker접속해서 로그인 하고 reporsitory를 생성해줍니다.생성 후 해당 repository를 들어가보면 Docker Commands 영역에docker push 계정이름/저장소 명:tagname 이렇게 push하라고 친절하게 보입니다.

Docker 계정 연결하기

커맨드로 돌아와 docker 계정으로 로그인 합니다

~$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username:
Password:
WARNING! Your password will be stored unencrypted in /home/ubuntu/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded

Dockerfile 이미지 생성

위에서 생성한 Dockerfile로 docker hub에 생성한 repository 이름과 repository에 올라갈 태그이름으로 빌드를 돌려 이미지를 생성합니다.

$ docker build -t [저장소 이름]/centos:gcc .

images 명령어를 통해 이미지가 생성됐음을 확인합니다

$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[저장소 이름]/centos gcc 32da4757a949 About an hour ago 640MB

이제 해당 이미지를 Docker hub에 올려주면 끝

docker push nethrueunbi/centos:gcc

Docker Hub에 들어가 정상적으로 올라갔는지 확인 하면

도커허브 성공 끝입니다 👏👏👏


이미지&컨테이너 한번에 지우기

테스트를 여러번 하다보면 이미지나 컨테이너가 많이 쌓이고 하나하나 지우려니 번거롭습니다.. 다음 명령어를 사용하면 한번에 지울 수 있습니다.

컨테이너 한번에 지우기

$ docker stop $(docker ps -a -q)
$ docker rm $(docker ps -a -q)

이미지 한번에 지우기

$ docker rmi $(docker images -q)


참고

https://www.44bits.io/ko/post/easy-deploy-with-docker

https://snowdeer.github.io/docker/2018/02/14/docker-push-image-to-docker-hub/

https://countryxide.tistory.com/86