yuns
[Docker] Docker 환경 공유 본문
반응형
Dockerfile
- 컨테이너 이미지의 설계서
- "무엇을 기반으로 만들고 있는가?", "누가 만들었는가" 등 컨테이너 이미지에 대한 정보를 기술하고 docker build 명령어로 컨테이너 이미지를 설계서에 기술된 대로 조립
- Dockerfile은 단순 텍스트 파일
- "Foreground에서 프로세스를 가동하는 것이 정의되어 있음" -> Dockerfile 안에 기술되어 있음
- centos: /bin/bash
- nginx: nginx -g 'daemon off'
Centos
https://hub.docker.com/_/centos에서 확인 가능
- 내가 설치한 버전이 아래 링크다.
- 안에 Dockerfile를 찾아봤더니, github에서 확인할 수 있었다.
FROM scratch
ADD centos-7-x86_64-docker.tar.xz /
LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.name="CentOS Base Image" \
org.label-schema.vendor="CentOS" \
org.label-schema.license="GPLv2" \
org.label-schema.build-date="20201113" \
org.opencontainers.image.title="CentOS Base Image" \
org.opencontainers.image.vendor="CentOS" \
org.opencontainers.image.licenses="GPL-2.0-only" \
org.opencontainers.image.created="2020-11-13 00:00:00+00:00"
CMD ["/bin/bash"]
- FROM 구: 컨테이너 이미지를 생성하는 기반 선언
- scratch: 컨테이너 이미지를 처음부터 생성하는 방법
- 필수 항목!
- ADD
- 압축 파일이 풀리면서 배치
- cf) COPY는 단순 복제되는 차이
- 압축 파일이 풀리면서 배치
- CMD
- 컨테이너 가동 시 default 프로세스 지정
Nginx
https://hub.docker.com/_/nginx
맨 위의 버전을 누르니까 깃허브가 연결된다.
Dockerfile 생성
자체 제작 컨테이너 이미지 생성하기
1. Dockerfile 생성
echo "Hello, Docker!" > hello-docker.txt
vi Dockerfile
Dockerfile에 적을 내용은 아래와 같다.
- centos:centos7 대신 centos:latest를 하게 되면 아래와 같은 에러가 발생하게 되는데 centos8에 대해서 종료가 되어서 그렇단다..
FROM docker.io/centos:centos7
ADD hello-docker.txt /tmp
RUN yum install -y epel-release
CMD ["/bin/bash"]
이미지 생성
docker build -t yun/centos:1.0 .
- Account 이름: yun으로 세팅
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
yun/centos 1.0 7ae90fcab934 6 days ago 385MB
yun/centos를 실행해보자
docker run -td --name yun-docker yun/centos:1.0
- yun-docker: 컨테이너 이름
- yun/centos:1.0: 실행하고자 하는 도커 이미지
위의 컨테이너를 실행하면, 해시값이 나오고, docker ps의 명령어를 치게 되면 아래와 같이 컨테이너가 실행됨을 확인할 수 있다.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
83b6c85ab53b yun/centos:1.0 "/bin/bash" About a minute ago Up About a minute yun-docker
아래 명령어를 통해 내가 만든 컨테이너 내의 bash로 들어갈 수 있고,
docker exec -it yun-docker /bin/bash
아래와 같이 명령어를 쳐보면, hello-docker.txt파일에 위에서 설정해둔 Hello docker가 프린트 되는 것을 확인할 수 있다.
요기 안에서 container 내부를 변경해보겠다.
yum install -y nginx
이상한게 설치된다.
exit 명령어로 빠져나온다.
컨테이너 상태를 이미지로 저장하기
docker commit yun-docker yun/centos:1.1
1.0버전에서 수정을 했기 때문에 1.1버전으로 새로운 컨테이너를 만들 생각이다.
docker images yun/centos:1.1
REPOSITORY TAG IMAGE ID CREATED SIZE
yun/centos 1.1 c5a6f9b0d532 27 seconds ago 563MB
- 1.0버전은 385MB인데, nginx를 설치하면서 용량이 커진 것을 확인할 수 있다.
Docker Hub에 이미지 등록 - 요거는 계정이 있어야 가능한 명령어인 것으로 보인다.
docker push yun/centos:1.1
참조
IT 운용 체제 변환을 위한 데브옵스
반응형
Comments