docker
https://docs.docker.com/engine/install/ubuntu/
Install Docker Engine on Ubuntu
Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install.
docs.docker.com
기본 ip부여 |
docker 설치
DOCKER_USER=ubuntu -> 사용자 권한 부여 sudo apt-get update && sudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release # 도커가 제공하는 공개키를 신뢰하도록 설정 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --yes --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 도커 공식 레파지토리 등록 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io sudo usermod -aG docker $DOCKER_USER |
재부팅 후 확인할수있다 |
docker compose 설치
https://docs.docker.com/compose/install/
Overview of installing Docker Compose
Learn how to install Docker Compose. Compose is available natively on Docker Desktop, as a Docker Engine plugin, and as a standalone tool.
docs.docker.com
DOCKER_COMPOSE_VERSION=2.17.3 -> 버전 홈페이지에 확인 curl -L " https://github.com/docker/compose/releases/download/$ {DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose |
kubectl 설치
Install and Set Up kubectl on Linux
Before you begin You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.28 client can communicate with v1.27, v1.28, and v1.29 control planes. Using the latest compatible version of kubectl helps avoid
kubernetes.io
apt-get update && apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list apt-get update && apt-get install -y kubectl |
kustomize 설치
https://kubectl.docs.kubernetes.io/installation/kustomize/binaries/
Binaries
Install Kustomize by downloading precompiled binaries.
kubectl.docs.kubernetes.io
KUSTOMIZE_VERSION=v4.4.1 curl -s " https://raw.githubusercontent.com/kubernetes-sigs/kustomize/kustomize/$ {KUSTOMIZE_VERSION}/hack/install_kustomize.sh" | bash kustomize 파일의 실행경로로 옮기는 과정 install -o root -g root -m 0755 kustomize /usr/local/bin/kustomize |
![]() |
![]() |
minikube 설치
https://minikube.sigs.k8s.io/docs/start/
minikube start
minikube is local Kubernetes
minikube.sigs.k8s.io
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube |
driver를 도커로 지정실행을하지만 root 권한으로는 실행이 불가능하다고 나온다 |
root 권한이 아닌곳에서 하면 실행할수있다 |
![]() Kubernetes 클러스터에 등록된 노드들의 정보가 나타납니다 |
![]() 현재 클러스터의 정보가 출력됩니다 |
Minikube 클러스터에서 현재 활성화된 애드온과 비활성화된 애드온의 목록이 출력됩니다. 각 애드온은 이름과 상태(활성화 또는 비활성화)가 표시됩니다. |
minikube addons enable ingress 이 명령을 실행하면 Minikube 클러스터에 Ingress 컨트롤러가 설치되고 활성화됩니다. 이를 통해 클러스터 내부에서 외부로의 트래픽을 라우팅하고 관리할 수 있습니다. dashboard ingress istio metallb 모두 활성화 하기 |
![]() docker run [이미지] |
![]() 다운로드 확인 |
![]() 정지를 시킨다 |
![]() docker ps -a 정지가 된다 |
![]() docker start (id 확인) 다시 방금이미지를 실행하면 |
![]() |
![]() docker create nginx create으로 실행 |
![]() docker ps -a 로 확인 |
![]() create nginx 를 실행 해준다 |
![]() 그리고 삭제 명령어 |
![]() docker ps 삭제 확인 |
![]() docker run ubuntu:focal 생성 |
![]() 접속 docker run -it ubuntu:focal |
![]() ctrl+d -> bg 접속 |
![]() docker ps 확인 |
![]() docker run -d --name mynginx nginx 이름을 지정해서 생성 |
![]() docker run -d --name mynginx -p 80:80 nginx 포트와 이름 지정 |
![]() ubuntu ip주소로 접속을 하면 접속이 가능하다 |
docker rmi (docker images -q) 이미지 삭제
docker stop $(docker ps -aq) 모든 컨테이너 종료
docker rm $(docker ps -aq)
https://ajdkfl6445.gitbook.io/study/devops/docker/make-image
도커 이미지 생성하기 - 콥 노트
WORKDIR: WORKDIR 지시자는 도커 파일에서 리눅스 명령어의 cd와 유사하게 뒤에 오는 모든 지시자(RUN, CMD, COPY, ADD 등)에 대한 작업 디렉토리를 설정한다. 특히 원래 최상위 파일이나 폴더에 있던 이름
ajdkfl6445.gitbook.io
![]() docker run --entrypoint sh ubuntu:focal --entrypoint sh: --entrypoint 옵션을 사용하여 컨테이너의 진입점(entrypoint)을 재정의합니다. 이 경우, 컨테이너가 시작될 때 셸 (shell) 프로세스가 진입점으로 사용됩니다. 즉, 컨테이너가 시작되면 sh 셸이 실행됩니다. |
![]() docker run --entrypoint echo ubuntu:focal hello_world |
![]() docker inspect f8 바뀌었다 |
start해도 되지않는다 (그럼 삭제하도 다른 방법으로 재설치) |
![]() docker run -it -e MY_HOST=itbank.com ubuntu:focal bash 환경변수 설정 |
![]() |
![]() docker run -it -p 8080:80 nginx |
![]() curl localhost:8080 |
docker run -it -p 8080:80 nginx -rm |
![]() |
![]() docker run -it -p 8080:80 --rm -v $(pwd):/usr/share/nginx/html/ nginx |
https://docs.docker.com/get-started/08_using_compose/
Use Docker Compose
Using Docker Compose for multi-container applications
docs.docker.com
![]() 6000 포트 누가 사용하고있어 다른 포드로 설정 |
![]() 윈도우 접속이 가능하다 |
![]() |
기존에 존재한 파일 삭제 후 재생성 version: '3.3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: image: wordpress:latest ports: - "60000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data: { } |
firefox -> localhost:60000 으로 접속 |
간단하게 회원가입 후 접속 모습 |
docker compose 8000 포트로 생성
![]() |
![]() |
![]() |
![]() |
![]() |
![]() 윈도우에 접속하면 log가 남는다 |
![]() docker compose down -v 제거 |
![]() docker compose build 제거 후 재구성 |
https://runebook.dev/ko/docs/docker/compose/gettingstarted/index
Docker Compose 시작하기
Documentation Contributors GitHub
runebook.dev
import time import redis from flask import Flask app = Flask(__name__) cache = redis.Redis(host='redis', port=6379) def get_hit_count(): retries = 5 while True: try: return cache.incr('hits') except redis.exceptions.ConnectionError as exc: if retries == 0: raise exc retries -= 1 time.sleep(0.5) @app.route('/') def hello(): count = get_hit_count() return 'Hello World! I have been seen {} times.\n'.format(count) |
![]() |
![]() |
docker build -t flask-redis . |
![]() |
![]() |
![]() |
![]() docker compose up |
![]() 중지 |
![]() 다시 실행하면 이어서된다 |