Docker

Moseoh·2022년 3월 26일
0

메모

목록 보기
3/3
post-thumbnail

설치


https://docs.docker.com/engine/install/ubuntu/

예전 버전 삭제

sudo apt-get remove docker docker-engine docker.io containerd runc

repository 설정

  1. Update the apt package index and install packages to allow apt to use a repository over HTTPS:
sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
  1. Add Docker’s official GPG key:
 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. Use the following command to set up the stable repository.
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 docker-ce docker-ce-cli containerd.io

portainer 설치 및 구동

# 볼륨 폴더 생성
sudo docker volume create portainer_data

# 다운로드 및 9000 포트로 실행
sudo docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --restart=always portainer/portainer
vi /etc/nginx/sites-available/moseoh.conf
server {
        listen 80;
        listen [::]:80;
        server_name moseoh.xyz;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name moseoh.xyz;
        root /var/www/html;

        ssl_certificate /etc/letsencrypt/live/moseoh.xyz/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/moseoh.xyz/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/moseoh.xyz/chain.pem;
        ssl_dhparam /etc/ssl/dhparam.pem;
        ssl_session_timeout 10m;
        ssl_session_cache shared:SSL:10m;
        ssl_session_tickets off;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256;
        ssl_ecdh_curve secp384r1;

        add_header Strict-Transport-Security max-age=31536000;
        add_header X-Content-Type-Options "nosniff" always;
        add_header X-Frame-Options "SAMEORIGIN" always;
        add_header X-XSS-Protection "1; mode=block" always;

        ssl_stapling on;
        ssl_stapling_verify on;

        index index.html index.nginx-debian.html;

        location / {
                proxy_pass http://localhost:8080;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header X-Real-IP $remote_addr;
                proxy_redirect off;
        }
}
vi /etc/nginx/sites-available/portainer.conf
server {
		listen 80;
        listen [::]:80;
        server_name portainer.moseoh.xyz;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name portainer.moseoh.xyz;

        ssl_certificate /etc/letsencrypt/live/moseoh.xyz/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/moseoh.xyz/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/moseoh.xyz/chain.pem;
        ssl_dhparam /etc/ssl/dhparam.pem;
        ssl_session_timeout 10m;
        ssl_session_cache shared:SSL:10m;
        ssl_session_tickets off;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256;
        ssl_ecdh_curve secp384r1;

        add_header Strict-Transport-Security max-age=31536000;
        add_header X-Content-Type-Options "nosniff" always;
        add_header X-Frame-Options "SAMEORIGIN" always;
        add_header X-XSS-Protection "1; mode=block" always;

        ssl_stapling on;
        ssl_stapling_verify on;
        
        location / {
                proxy_pass http://localhost:9000;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header X-Real-IP $remote_addr;
                proxy_redirect off;
        }
}
vi /etc/nginx/sites-available/api.conf
server {
		listen 80;
        listen [::]:80;
        server_name api.moseoh.xyz;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name api.moseoh.xyz;

        ssl_certificate /etc/letsencrypt/live/moseoh.xyz/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/moseoh.xyz/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/moseoh.xyz/chain.pem;
        ssl_dhparam /etc/ssl/dhparam.pem;
        ssl_session_timeout 10m;
        ssl_session_cache shared:SSL:10m;
        ssl_session_tickets off;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256;
        ssl_ecdh_curve secp384r1;

        add_header Strict-Transport-Security max-age=31536000;
        add_header X-Content-Type-Options "nosniff" always;
        add_header X-Frame-Options "SAMEORIGIN" always;
        add_header X-XSS-Protection "1; mode=block" always;

        ssl_stapling on;
        ssl_stapling_verify on;
        
        location / {
                proxy_pass http://localhost:9090;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header X-Real-IP $remote_addr;
                proxy_redirect off;
        }
}
sudo ln -s /etc/nginx/sites-available/moseoh.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/portainer.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/api.conf /etc/nginx/sites-enabled/

명령어


# image 확인
docker images

# image 삭제
docker rmi ${image id}

# 실행중인 컨테이너 확인
# -a 정지된 컨테이너 포함
docker ps -a

# 컨테이너 정지, 시작
docker stop ${container-name}
docker start ${container-name}

# docker run nginx
# 80포트로 들어오는 요청을 80포트로 전달
# -v 볼륨 설정
# --restart-always: 재시작시 실행
docker run -d -p 8080:8080 --name=nginx --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v nginx_data:/data nginx:stable
docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.11.1
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<Password> --name=mariadb --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v mariadb_data:/data mariadb
docker run -d -p 9090:9090 --name=assistant_server --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v assistant_server_data:/data azqazq195/assistant_server

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Qkrrhkwkd5gh@ --name=mariadb --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v mariadb_data:/data mariadb

# 컨테이너 접속
docker exec -it ${name} /bin/bash
# 빠져나오기
exit

nginx에 flutter 빌드 환경 구성

# 깃 클론
git clone https://github.com/flutter/flutter.git
# 환경변수 설정
# docker 재시작 시 설정이 사라지므로 .bashrc에 작성
export PATH="$PATH:`pwd`/root/flutter/bin"
# Dart SDK 압축 풀기 위함
apt-get install unzip
# 설치 확인
flutter --version

# git clone 등으로 flutter 프로젝트를 다운로드
git pull origin master
# web으로 빌드
flutter build web
# 빌드된 파일을 기존파일과 교체
rm -rf /usr/share/nginx/moseoh.xyz
cp -r /home/moseoh_server/build/web /usr/share/nginx/moseoh.xyz
profile
슬기로운 탐구생활

0개의 댓글