Docker 16

Docker 이미지 만들기

docker hub에서 이미지를 다운받을때 생기는일 dockerhub -> (pull)->image->(run)-> container(run 명령어로 여러게가 생성가능하지만 완벽히 격리된 공간에 각각의 독립된 컨테이너가 생성된다.) 여기까지의 과정을 거쳐서 컨테이너고 컨테이너에서 작업을 하면서 수정을한 컨테이너에게 commit명령어를 사용하면 새로운 image가 만들어 지는 것이고 이 image를 docker hub에 push를 하게 되면 dockerhub에 올라가게 된다. 이미지 만들기 git이 설치된 우분투가 필요해서 우분투를 pull로 이미지를 다운받아서 run명령어로 컨테이너를 만들었다. 그리고 그 컨테이너에 git을 설치하여서 commit명령어로 새로운 이미지를 만들면된다.. 그럼 먼저 깃이 설..

Docker 2023.08.07

Docker compose 이용

version: "3.7" # 파일의 버전 services: ## 이 지시어안에는 만들고싶은 컨테이너들 명시 db: #컨테이너이름 image: mysql:5.7 # 해당 이미지를 사용해서 mysql설치 volumes:# -v 옵션 호스트와 컨테이너 연결 - ./db_data:/var/lib/mysql restart: always environment:# -e 옵션 환경변수세팅 MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: wordpress MYSQL_USER: wordpress_user MYSQL_PASSWORD: 123456 app: depends_on: ## yml파일을 시작할때 선수과정 명시.. - db## db가 만들어졌을때 해당 app을 다운받라 라고 명시 ima..

Docker 2023.08.07

Docker는 VM이 아니다

Docker는 VM이 아니다 처음 docker를 실행할 때 다음과 같은 명령을 실행하면 우분투 서버가 실행된다고 생각했다. 즉, Virtual machine과 같이 컨테이너 내에 우분투 서버가 실행되는 줄 알았다. Docker의 컨테이너는 Virtual machine과 같이 하나의 온전한 서버를 제공하는 것이 아니라 명령을 실행하는 환경만 제공하고 그 명령을 실행할 뿐이다. Docker 컨테이너는 단지 명령만 실행하고 그 결과만 보여주는 기능을 수행한다 우분투의 bash shell에서 명령을 실행하려면 위 예제에서 Docker run 명령행이 아닌 우분투 image의 bash shell에서 "ls", "cat" 등과 같은 명령을 실행하려면 어떻게 해야 할까? Docker 컨테이너를 실행할 때 다음 두 옵..

Docker 2023.08.07

도커와 마이크로 서비스 그리고 DevOps

도커 탄생배경 서버를 이전할때 작은 설정하나만 실수하더라도 프로그램이 배포가 안되는 경우가 생길 수 있다. 그렇다면 그 서버를 수십개를 이전한다면? 엄청나게 잔인하고 고통스러운 작업이 아닐수가 없게된다. 하지만 도커가 탄생하면서 위와같은 복잡한 배포 작업들이 엄청나게 간소화 됐다. 도커는 일종의 서버환경을 감싸서, 도커 레벨로 서버를 다룰 수 있게 해주고. 따라서 서버이전,서버 패키지 버전변경등등으로 일일이 서버 설정이 풀필요 해진것이다. 이제 개발자는 단순히 도커를 만들어서, 서버에서 그 도커를 실행시키기만 하면된다... 웹서비스 개발과 마이크로 서비스 모놀리틱 구조 처음에는 하나의 서버에 모든 기능을 넣었다. 1세대 : 정적패이지 서버 2세대 : 동적페이지 서버 3세대 : 다양한 사양자에 요구에 맞춰..

Docker 2023.08.07

docker와 docker 연결하기\컨테이너끼리 통신하는법

docker 컨테이너와 컨테이너 끼리 통신하기 docker를 하다보니 컨테이너끼리 통신을 하고싶은 경우가 생기게 됐다. 예를들자면 a컨테이너에서 b컨테이너로 데이터를보내서 b컨테이너에 DB에 데이터를 저장하는등등 알아두면 여러가지로 유용할것같습니다. docker network설정하기 docker network create [네트워크 이름]위명령어로 네트워크를 생성하고 docker network list로 생성된 네트워크를 확인할 수 있다. 그리고 컨테이너를 생성할때 --network [네트워크 이름 혹은 아이디]옵션을 넣어서 해당 이미지를 컨테이너로 만들때 그 네트워크에 접속시킬 수 있습니다 네트워크 inspect확인 docker network inspect [네트워크 이름 혹은 아이디]위명령어를 통해서..

Docker 2023.08.07

docker 주요명령어

docker image 주요 명령어 docker login docker logout 다운받을 이미지 검색 docker search [이미지명] --limit 옵션을 사용하면 보고싶은 수만큼 리스트를 볼 수 있다. 공식 이미지는 OFFICIAL학목이 Ok라고 써져 있는 경우가 많다. 이미지 검색 docker images -q : 이미지 ID만 보기 이미지 삭제 docker rmi 이미지ID docker image rm 이미지ID docker Container 주요 명령어 컨테이너 생성 docker create 이미지ID 생성된 컨테이너 확인 docker ps a : 실행중이지 않은 컨테이너까지 다 확인 p : 컨테이너 아이디만 출력 command는 컨테이너에서 내부적으로 실행시킬 프로그램 도커는 어떠한 시..

Docker 2023.08.07

docker run 옵션 /alpine?

docker run 옵션 -i : 컨테이너 입력STDIN을 열어놓는 옵션 -t: 가상터미널(tty)을 할당하는 옵션 --name: 컨테이너 이름설정 -d: 컨테이너를 백그라운드에서 실행하는 옵션 --rm: 컨테이너 종료시 컨테이너를 자동으로 삭제하는 옵션 -p: 호스트와 컨테이너 포트를 연결하는 옵션 -v: 호스트와 컨테이너 디렉토리를 연결하는 옵션 attach: 포그라운드로 접속 혹은 실행중인컨테이너로 연결하는 옵션 -it옵션의 의미 docker 컨테이너에 표준 입력을 오픈해놓고 pseudo tty를 만들어서 해당하는 표준입력을 tty에 연결 따라서 키보드 입력을 tty를 통해 컨테이너의 표준입력으로 전달할 수 있도록 하는 것임 tty? tty는 teletypewriter의 약자로, 리눅스에서는 콘솔 ..

Docker 2023.08.07

Dockerfile 기본 문법

Dockerfile 명령 FROM :베이스 이미지 지정명령 LABEL : 버전정보, 작성자와 같은 이미지설명을 작성하기 위한 명령 도커파일의 기능적인 영향을 주지는 않는다. CMD : docker컨테이너가 시작할때, 실행하는 쉘 명령을지지하는 명령 ,RUN과 비슷하지만 RUN은 이미지 작성시 실행하는 명령이고, CMD는 컨테이너를 시작할때 실행하는 명령임 dockerfile에서 cmd명령은 파일당 하나만 할 수 있다. RUN: 쉘 명령을 실행하는 명령 ,RUN은 이미지 작성시 실행되며, 일종의 새로운 이미지 layer를 만드는 역할을 함 ENTRYPOINT: docker 컨테이너가 시작할대, 실행하는 쉘명령을 지정하는 명령 ,CMD명령은 해당명령으로 덮어씌워짐, ENTRYPOINT로 지정한 명령은 doc..

Docker 2023.08.07

docker 컨테이너와 이미지 조사하는법

docker 컨테이너와 이미지 조사 docker history 이름 위 명령어로 해당 이미지를 만드는데 사용된 layer를 조사하는 명령 docker cp 컨테이너에서 특정 파일을 호스트 PC로 가져오기 위해서 사용합니다. 특정 파일 확인을 위해 활용 반대로 호스트 pc에서 컨테이너에 특정파일을 넣을 수 도 있습니다. ex) docker cp 컨테이너이름:[컨테이너내부파일경로] 가져올호스트PC경로 혹은 docker cp 호스트pc파일 컨테이너이름:컨테이너내부에덮어씌울파일경로 docker commit 컨테이너 변경사항을 이미지 파일로 생성 docker commit 옵션 컨테이너ID 이미지이름:태그 예를 들어 자신이 docker 컨테이너 내부에서 작업을 하다가 그 컨테이너의 상태가 마음에 들어서 이미지로 만..

Docker 2023.08.07

도커 엔진 기본 개념

도커엔진 도커 이미지와 컨테이너 1. 도커 이미지 이미지는 컨테이너를 생성할 때 필요한 요소이며, 가상 머신을 생성할 때 사용하는 iso 파일과 비슷한 개념입니다. 여러개의 계층으로 된 바이너리 파일로 존재하고, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용됩니다. 도커에서 사용하는 이미지이름의 규칙은 저장소이름/이미지이름:태그 의 형태로 구성된다. 저장소 : 도커허브 또는 개인 도커 레지스트리에 올라간 이미지 이미지 이름 : 이미지의 역할 (우분투 이미지, mysql 이미지 등등) 태그 : 이미지 버전 혹은 리버전 관리 사용 2. 도커 컨테이너 여러가지 이미지들로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어 있는 파일시스템 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간..

Docker 2023.08.07