docker

docker

짱구는굿 2023. 10. 4. 11:13

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 설치

https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#install-using-native-package-management

 

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



중지 


다시 실행하면 이어서된다