도커 스터디 1일차 정리

Posted by HULIA(휴리아)
2017. 10. 20. 00:02 호스팅_서버_툴/도커(DOCKER)
20171019
도커 이미지 만들기

docker images
이미지 리스트

docker ps -a(죽은 놈까지)
컨테이너 리스트

docker network ls
컨테이너의 network 종류를 보여줌

network 종류
bridge(싱글 머신에서 여러개 컨테이너 연결할때 ex)디비서버 was서버 web서버등)
overlay(물리적 머신 여러개연결) -> swarm에서 씀

docker network create 네트워크명(defaut가 bridge)
network 생성

docker network rm 네트워크명
network 삭제


docker inspect 네트워크id나이름 컨테이너names나 컨테이너id를 쓰면 자세한 내용이 나온다

생성순서(반드시는 아니다)
이미지생성->컨테이너생성
지우는 순서(반드시)
컨테이너지우고->이미지지우기(네트워크는 아무때나 지워도 된다)


docker rm -f(강제) 컨테이너id나names로해도된다(스페이스로 띄워서 여러개를 동시에 지울 수 있다)
컨테이너 종료 및 지우기
 
docker rmi -f(강제) 이미지repository+tag(latest는 default임 그러니 버젼일때는 반드시 적어줘야됨)
이미지 삭제

컨테이너 종료
docker stop 컨테이너이름

컨테이너 재시작(최초 docker run 환경 그대로)
docker restart 컨테이너이름


***************이미지의 tag가 버젼이라고 생각하면 된다


registry-local docker hub이다
registry도 컨테이너다


docker image만들기
Dockerfile(이미지 만들기 위해서 필요하다)

Dockerfile형식
FROM
ENV
RUN
ADD
COPY
VOLUME
EXPOSE
WORKDIR
CMD
ENTRYPOINT


예시


FROM dockerhub명/os명:TAG명-utf8
ENV 환경변수
RUN echo aa
ADD COPY와 비슷한데 url도 tar도 지원가능
COPY 

VOLUME 경로 
EXPOSE PORT명

ENTRYPOINT
CMD 명령어가 들어가는데 ["ECHO","AAA"] 이런식으로
ENTRYPOINT와 CMD는 비슷

ENTRYPOINT와 CMD는 컨테이너 생성할때 쓰이고 VOLUME과 EXPOSE는 알려주는 용도 나머지는 이미지 생성할때 쓰인다
ENTRYPOINT는 docker run에서 명령어로 넣은 부분을 추가적으로 인자값으로 보내줌
CMD는 docker run에서 명령어로 넣은 부분이 CMD부분을 대체된다


이미지 생성
docker build --tag 이미지이름:TAG명 .(dockerfile위치)
ex)docker build --tag mycentos:entry .


이미지를 컨테이너로 실행(컨테이너가 바로 죽음)
docker run --name 컨테이너이름(내가 만들고 싶은것) -v(위치) -p(포트) -d(백그라운드)  --network 네트워크명 -e환경변수 이미지이름:이미지TAG명 명령어
ex) docker run --name test -p 8080:8080 mycentos:7 
-p 옵션은 hostos:container 이런형식으로 쓴다


로그 보기
docker logs 컨테이너이름

이미지를 컨테이너를 실행(컨테이너가 유지됨)
docker run -d(백그라운드) --name 컨테이너이름 --tty 이미지이름:이미지TAG명 /bin/bash(쉘프롬프트)
ex)docker run -d --name test --tty mycentos:7 /bin/bash

컨테이너안으로 접속
docker exec -it 컨테이너id나names /bin/bash(쉘프로프트)
이제쓰는 컨테이너안에서 실행되는 것이네

컨테이너 접속 종료
exit


-내 이미지파일 만들때 docker hub 검색해서 만들면 된다(dockerfile)
-없으면 실제로 os에 들어가서 실제로 쳐보면 된다
-남의 이미지 쓰고 싶으면 FROM에서 쓰면 된다


docker hub(docker hub에 올리기)
-official 공식버젼
-public 이미지를 수동으로 직접 업로드
-automated build github이랑 연동해서 업로드

public으로 이미지 올릴때
docker hub에 가입을 하고(github의 계정명을 쓰게 되었다)
docker login ID랑 패스워드 침

이미지 생성할때 dockerhub계정명/이미지이름:TAG명 

docker push dockerhub계정명/이미지이름:TAG명
이러면 public으로 docker hub에 올라간다 


automated build으로 이미지 올릴때
-github에는 repository를 만들고
-dockerfile을 넣어넣고
-docker hub에서 create automated build를 통해서 생성함(github랑 연동하는 repository선택)
-docker hub의 build setting의 docker파일의 경로를 적어둠
-github에서 dockerfile을 변경하면 자동으로 docker hub에서 빌드해서 이미지를 만든다 


도커 이미지 다운만 받을때 
docker pull 이미지명:TAG



gist 설정
-github에 gitst를 등록해놓고
-raw버튼을 이용해서
-curl을 이용해서 raw버튼을 url을 치면 docker 설치(여러가지 명령어를 한번에 실행)