본문 바로가기
Docker

[Docker] 클라우드를 위한 쿠버네티스&도커 - 1주차 (wordpress)

by 지금은4시11분 2024. 7. 18.

[Rocky9 설치]

https://cafe.naver.com/thisislinux

 

이것이리눅스다 : 네이버 카페

[이것이 리눅스/윈도서버]의 정보 자료실입니다.

cafe.naver.com

'Rocky Linux 9.0이 설치된 가상머신'이라는 글에서 server를 다운받기. (가입 안해도 됨)

 

다운된 server 파일을 VMware Workstation17 Player로 열어준다

 

[기본설정]

repo설치 

$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
$ sudo dnf install docker-ce docker-ce-cli containerd.io
*repo란? 
-여러가지 Git repository 를 통합하여 Git을 쉽게 작업할 수 있도록 함.
-repo 명령어는 경로 어디에나 삽입할 수 있는 실행 가능한 Python 스크립트.
 

도커 자동실행

# 다른 배포판의 부팅시 Docker를 자동으로 시작하는 명령어
$ sudo systemctl start docker
$ sudo systemctl enable docker

사용자 권한 적용

docker 명령어는 root 권한을 가진 계정으로 실행해야 한다.

일반 계정은 sudo를 이용해서 명령어를 실행하는데, 매번 sudo를 입력하기 귀찮으니 docker 그룹에 사용자를 추가한다. 

#현재 접속중인 사용자를 docker 그룹에 추가
$ sudo usermod -aG docker $USER

#usermod : 사용자 속성 변경
# -G : 새로운 그룹
# -a : 다른 그룹에서 삭제 없이 G 옵션에 따른 그룹에 사용자를 추가

#그룹 추가를 현재 콘솔에 반영
$ newgrp docker

#실행 확인
$  docker run hello-world

 

#결과

(Unable to find image 'hello-world:latest' locally : 이미지를 로컬에서 찾을수 없어 다운로드 했다는 메세지)


hello-world 는 '도커가 소프트웨어를 배포할 때 사용하는 단위인 이미지'의 이름으로,

docker run 명령을 이용해서 이미지를  실행하면 도커는 다음 과정을 거친다.

이미지 파일은 docker Hub라는 곳에 위치하며, docker Hub에서 해당하는 이미지 파일을 다운로드한다. 

이미지를 실행하면 컨테이너가 생성된다.

그러나 docker Hub에 배포판이 없다면? 배포판을 보완하고 싶다면? 이럴때 Docker File을 사용한다.

docker run 명령어 실행 과정

 

#컨테이너 실행
$docker run [ OPTIONS ] IMAGE [ :TAG|@DIGEST ] [ COMMAND ]  [ARG... ]
옵션 설명
-d detached mode. 백그라운드 모드
-p 호스트와 컨테이너의 포트를 연결 (포워딩)
-v 호스트와 컨테이너의 디렉토리를 연결 (마운트)
-e 컨테이너 내에서 사용할 환경변수 설정
-name 컨테이너 이름 설정
-rm 프로세스 종료시 컨테이너 자동 제거
-it -i 와 -t를 동시에 사용. 터미널 입력을 위한 옵션
-link 컨테이너 연결 [컨테이너명:별칭]

 

#로컬에 설치된 이미지 표시
$ docker images

 

*이미지란?

-컨테이너를 실행할 수 있는 실행파일, 설정 값들을 가지고 있는 것

#컨테이너 목록 확인. docker run 명령어는 실행할 때마다 컨테이너를 생성한다.
$ docker container ls -a
$ docker ps
$ docker ps -a

#도커 동작 확인
$ docker --version

#도커 컨테이터 / 이미지 삭제
$ docker rm -f [ 컨테이너 아이디 ]
$ docker rmi -f [ 이미지 아이디 ]

#모든 도커 컨테이너 / 이미지 삭제
$ docker rm $(docker ps -a -q)
$ docker rmi $(docker images -q)

[mysql 실행]

#접속을 위한 mysql client 설치
$ sudo dnf install mysql

#mysql 컨테이너 실행
$ docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql mysql:5.7

#mysql에 접속하기
-h : mysql 서버의 호스트를 지정
-u : mysql 서버에  root인  사용자로 접속하겠다는 옵션
$ mysql -h 127.0.0.1 -u root

[wordpress 생성]

*wordpress란?
-블로그나 웹사이트를 쉽게 만들수 있는 플랫폼

 

wp 데이터베이스를 생성하고 해당 데이터베이스에 접근할 수 있는 사용자를 만든다
grant : 데이터베이스에 권한을 부여
all privileges : 모든 권한을 부여, 이 사용자에게 데이터베이스에서 모든 작업을 할 수 있는 권한을 부여
on wp.* : wp 데이터베이스의 모든 테이블에 대한 권한을 부여
to wp@% : 사용자 이름이 'wp'이고 모든(%) 호스트나 ip주소에 대해 접근을 허용하겠다는 의미
identified by 'wp' : 사용자의 비밀번호를 설정. 여기선 비밀번호가 'wp'.

$ mysql> create database wp CHARACTER SET utf8; grant all privileges on wp.* to wp@'%' identified by 'wp';


#워드프레스 컨테이너 생성
$ docker run -d -p 8080:80 --link mysql:mysql -e WORDPRESS_DB_HOST=mysql -e WORDPRESS_DB_NAME=wp -e WORDPRESS_DB_USER=wp -e WORDPRESS_DB_PASSWORD=wp wordpress

 

#결과 - 성공!