Back-End Study/Linux

도커 이미지 생성 1. 도커 이미지 생성 - #1. 실행중인 컨테이너를 이용해 이미지 제작 - docker commit 대상컨테이너 이미지명:태그 (ex)docker commit db1 mydb:1.0) - #2. Dockerfile 생성 - vim Dockerfile 입력 후, 다음과 같이 작성 FROM nginx RUN ["mkdir", "/test"] RUN ["mkdir", "-p" ,"/web/site1/public"] COPY ./html /web/site1/public COPY ./conf /etc/nginx/conf.d - #3. 도커 이미지 빌드 - docker build -t 이미지명:태그명 도커파일 경로 (docker build -t myimg:1.0 /home/user1/work/n..
도커 컴포즈를 이용해 컨테이너 관리 1. 도커 컴포즈를 이용해 컨테이너 관리 - 도커 컴포즈는 yaml 포맷으로 작성되며 여러 개의 컨테이너의 실행을 한 번에 관리를 할 수 있게 해 줌 - docker compose documentation - docker compose 버전 정보 - docker-compose.yaml 파일 생성 : vim docker-compose.yaml] version: "3.8" services: web: image: "nginx" ports: - 8080:8080 volumes: - /home/user1/work/nginx/conf:/etc/nginx/conf.d - /home/user1/work/nginx/html:/web/site1/public fpm: image: "bit..
mariadb 컨테이너 실행 1. mariadb 컨테이너 실행 - #1. 이미지 다운로드 : docker pull mariadb - #2. 컨테이너 실행 - docker run -d --name db -p 3307:3306 --env MARIADB_ROOT_PASSWORD=1234 --rm mariadb:latest ※ MARIADB_ROOT_PASSWORD는 컨테이너 내부에서 사용할 mysql root 계정의 비밀번호 - #3. DB 생성을 위한 컨테이너 내부 진입 : docker exec -it db bash - #4. mysql 보안 설정 : /usr/bin/mariadb-secure-installation - 첫 번째 : 위에서 설정한 root 비밀번호 - 두, 세 번째 : n - 나머지 : y ..
컨테이너의 네트워크 통신 1. 컨테이너의 네트워크 통신 - 컨테이너로 네트워크 통신하는 방법은 여러 방법이 존재 - 컨테이너 → 외부 - 컨테이너 → 내부 - 컨테이너 → 호스트PC(본인의 Centos7) - 컨테이너 → 컨테이너 2. Case1. 컨테이너 → 외부 - wget으로 통신 (컨테이너가 켜져 있으면 종료(docker stop app1)) - #1. 컨테이너 실행 : docker run --name=app1 -d -p 8031:8099 --rm -v /home/user1/work/html:/web/site1/public -v /home/user1/work/conf/nginx:/etc/nginx nginx - #2. 컨테이너의 내부 쉘에 접속 : docker exec -it app1 bash -..
컨테이너의 nginx 설정과 root 폴더 관리하기 1. 컨테이너의 nginx 설정과 root 폴더 관리하기 - #1. 설정 파일용 작업 폴더 생성 : mkdir -p /home/user1/work/conf/nginx - #2. 기존의 nginx 설정 폴더를 작업폴더로 복사 : cp -r /etc/nginx/ /home/user1/work/conf/ - #3. 가상호스팅 설정 세팅 (참고자료) : vim /home/user1/work/conf/nginx/conf.d/vhost.conf listen 8099; server_name project1; location / { root /web/site1/public; index index.html; } - #4. root 디렉터리용 작업 폴더 생성 : mkdi..
도커 마운트 볼륨 1. 마운트 볼륨 - 호스트 PC 특정 폴더와 컨테이너 특정 폴더를 동기화 - 컨테이너의 파일이 호스트를 덮어쓰면 호스트에 문제가 생길 수 있으므로 호스트의 파일을 컨테이너로 덮어 씀 2. 마운트 볼륨 사용하기 - 작업 폴더 생성 - mkdir -p /home/user1/work/html - 작업 폴더와 컨테이너 nginx의 root폴더(/usr/share/nginx/html)를 마운트 볼륨 설정 - docker run --name=app1 -d -p 8031:80 --rm -v /home/user1/work/html:/usr/share/nginx/html nginx - 브라우저로 확인 (페이지가 뜨지 않음) → 이유는 작업 폴더의 내용으로 컨테이너의 폴더를 덮어 쓰는데 작업 폴더가 비..
도커 볼륨 1. 도커 볼륨 (Docker Volume) - 도커 이미지로 컨테이너 생성 시, 읽기 전용으로 이미지가 생성됨 - 이렇게 되면, 컨테이너를 삭제 시, 데이터도 같이 날라가게 됨 - 이러한 문제점을 막기 위해 볼륨을 이용 ※ 볼륨(Volume) : 컨테이너의 데이터 유지 한계를 극복하기 위해 로컬 PC에 컨테이너의 파일을 저장하는 공간 - 이를 통해, 데이터를 보관하고 컨테이너간 파일 공유가 자유로움 2. 볼륨의 유형 - 1) 익명 볼륨 - 로컬 PC 어딘가에 저장 - 컨테이너 종료와 함께 사라짐 - 추후, 볼륨 병합 때 사용 - 2) 네임드 볼륨 - 로컬 PC 어딘가에 저장 - 이름이 지정되어 따로 삭제하지 않으면, 유지됨 - 추후, 다른 컨테이너에 붙일 수 있음 3. 익명 볼륨 사용하기 -..
도커 컨테이너 실행 1. 명령어 기본 구조 - docker exec 컨테이너 쉘 명령어 - docker exec app1 vim /etc/os-release - app1 컨테이너의 배포한을 확인함 (Debian 배포판인 것을 확인) - docker exec app1 apt-get update - app1 컨테이너에 apt-get update 명령어 실행 (apt-get은 데비안 계열의 yum 명령어) - docker exec -it app1 apt-get install vim - app1 컨테이너에 vim을 설치 (기본적으로 패키지 설치 시, -it 옵션으로 상호작용 의사를 밝혀야 함) - docker exec -it app1 bash - bash 또한 명령어 입력이 이루어지므로 상호작용이 필요한 작업이..
nginx 컨테이너 실행1. nginx 컨테이너 실행 - docker pull nginx : nginx 이미지 설치 - docker run nginx    - 문제점 : 제어권을 nginx가 잡고 안 놔줌    - 외부에서 접근할 수 없음        → 원래 도커 컨테이너는 독립적인 공간에서 실행되기 때문에 접근이 안되는 것이 정상 - docker run -d nginx    - detach 옵션 : 프로세스를 백그라우드로 돌리고 제어권 유지    - 여전히 외부에서 접근할 방법이 없음 - docker run -d -p 8031:80 nginx    - 포트포워딩, 외부에서 접근 가능 (http://(enp0s3에서 inet 주소):8031)        ※ enp0s3의 inet 주소는 ip addr..
컨테이너 관련 명령어 1. 컨테이너 관련 명령어 - docker ps : 조회 - 현재 실행중인 컨테이너 목록 - 전체조회 : docker ps -a (종료된 컨테이너도 표시) ※ 컨테이너 ID와 이름은 고유함 - 아래 명령어 3개는 전부 같은 의미 - docker logs 7daa850a1d69 (CONTAINER ID) - docker logs 7d (CONTAINER ID) - docker logs intelligent_faraday (NAME)
도커 명령어1. 도커 이미지 관련 기본 명령어 - 도커 명령어 공식 문서 - 도커 허브 : 여러 이미지들을 볼 수 있음    - 여기서 이미지는 컨테이너를 생성하는 데 필요한 파일 시스템과 설정을 정의한 템플릿을 뜻함 - docker pull 이미지명 : 다운로드 - docker rmi -f 이미지명 : 삭제 - docker images : 목록
도커 1. 도커의 목적 - 프로그램은 운영체제 위에서 돌아감 - 운영체제는 커널 + 패키지로 이루어져 있음 ※ 커널 : OS의 기본 기능을 실행하는 부분 - ex) 응용프로그램 or 주변장치 or 조작 감시, 디스크나 메모리 등을 자원 배분, 응용 프로그램의 실행 등 - 이 패키지 구성이 어떠냐에 따라 배포판이 달라짐 - 배포판들은 커널을 공유 - 운영체제 위에서 돌아가는 프로그램은 운영체제의 패키지 or 외부 패키지를 이용하여 실행 - 프로그램의 실행이 운영체제와 관련 패키지에 종속(운영체제 or 패키지가 바뀌면 잘 안될 수 있음) - 일반적으로 서로 다른 한경에서 애플리케이션이 구축됨 - 개발은 대부분 mac, windows에서 이루어지며, 완성된 어플리케이션을 서버에 배포하는 방식 - 이 과정에서 ..
PHP의 DB연동 1. PHP의 DB연동 - 관리자 로그인 - mysql -u root -p1234 - site1 DB 생성 (CREATE DATABASE site1;) - site1 계정 생성과 동시에 해당 계정에 site1안에 들어있는 모든 테이블에 관한 권한을 부여 - GRANT ALL PRIVILEGES ON site1.* TO site1@`%` IDENTIFIED BY 'korea1234'; - DB 생성 및 세팅 (SQLyog에 작성) DROP DATABASE IF EXISTS site1; CREATE DATABASE site1; use site1; CREATE TABLE article ( id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, reg_d..
HOST 세팅하기 1. HOST 세팅하기 - IP를 매번 기억하기는 쉽지 않고 번거로움 - 그래서 나만의 DNS를 만듦 - C:\Windows\System32\drivers\etc\hosts 파일 열기 - 192.168.1.111 myserver (이 때, IP는 자신이 등록하고자 하는 IP를 적어야 함. 이 IP는 하나의 예시)
php-fpm 연동1. php-fpm 연동 - php-fpm 켜기    - sudo systemctl status php-fpm으로 상태 확인    - sudo systemctl start php-fpm으로 php-fpm 시작    - sudo systemctl enable php-fpm으로 활성화    - sudo ps -ef | grep php (php 프로세스가 평소에 몇 개 떠 있는지 확인할 수 있음)    - sudo netstat -nlpt | grep php (php-fpm이 몇번 포트와 연결되어 있는지 확인할 수 있음) - nginx에 php 연동 설정    - sudo vim /etc/nginx/conf.d/vhost.conf 입력 후, 원하는 server에 다음 내용을 추가set $do..
NewBean
'Back-End Study/Linux' 카테고리의 글 목록