꿀팁 CentOS Docker 관리 - Portainer 설치 완벽 따라하기(Docker GUI)
[도커 관리를 쉽게하는 꿀팁]
꿀팁 CentOS Docker 관리 - Portainer 설치 완벽 따라하기(Docker GUI)
docker를 이용하는 것이 보편화 되면서 Kubernetis , Ranchers , Portainer 등의 GUI 환경을 이용하는 것이 필요한 시대가 되었습니다. 여러대의 도커를 운영하기 위해서는 이런 툴들이 앞으로 필요할 것으로 보입니다.
Portainer 는 도커를 웹 페이지를 통해 작동 상태나 도커관리를 쉽게 해주는 툴입니다.
Portainer를 이용하면 서버의 작동 상태를 볼수 있는 Dashboard와 새로운 이미지를 생성, Volume, Host 관리 등을 통해서 쉽게 도커 커멘드를 사용하지 않고도 도커 환경을 관리할 수 있습니다.
1. Docker 패키지 설치
2. Docker 환경 준비
3. Portainer 설치
1. Docker 패키지 설치
Docker설치는 간단히 아래와 같습니다.
[yum Repository 설정]
# yum install -y yum-utils
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[docer - 이전 버전 삭제]
# yum erase docker-ce docker-ce-cli containerd.io
[docker - 설치]
# yum install docker-ce docker-ce-cli containerd.io
[docker - 확인]
# docker --version
Docker version 19.03.13, build 4484c46d9d
# 자세한 설치는 [CentOS에 Docker 시작하기 - Engine 설치] 를 참조 바랍니다.
: https://couplewith.tistory.com/entry/CentOS에-Docker-Engine-설치
Docker의 공식 웹사이트(https://docs.docker.com/get-docker/)에서 운영 체제에 맞는 설치 가이드를 참조하여 Docker를 설치합니다.
2. Docker 환경 준비
우선 도커 서비스를 기동하고 도커의 데이터를 관리할 volume 을 만들어 줍니다.
Docker서비스를 기동하고 Volume를 생성 합니다. Docker Volume을 생성하고 관리하기 위해 docker volume 명령어를 사용합니다.
[Docker 서비스를 기동한다.]
# systemctl start docker
# systemctl enable docker
[Docker volume을 생성한다]
# docker volume create portainer_data
# docker volume ls
DRIVER VOLUME NAME
local portainer_data
* Docker Volume를 특정 위치로 생성가능합니다.
docker volume create --opt type=none --opt device=/my/custom/path \
--opt o=bind portainer_data
Docker Volume의 역할
Docker 컨테이너는 일시적이며, 컨테이너가 종료되면 내부 데이터도 함께 소멸합니다. 이로 인해 데이터의 지속성이 필요한 경우 Docker Volume을 사용합니다.
1. 데이터 영속성 : 컨테이너가 종료되어도 데이터는 보존합니다.
2. 공유 및 볼륨 마운트 : 여러 컨테이너에서 호스트 파일 시스템과 연결하여 데이터를 쉽게 공유할 수 있습니다.
3. 백업 및 복원: Docker Volume을 사용하면 컨테이너의 데이터를 쉽게 백업하고 복원할 수 있습니다.
4.드라이버 지원: 다양한 드라이버를 사용하여 로컬 파일 시스템 외에도 네트워크 드라이버, 클라우드 스토리지 등을 사용할 수 있습니다.
3. Portainer 설치
Portainer는 docekr 컨테이너로 작동되며 도커 이미지를 받아서 작동하여야 합니다.
아래와 같이 웹서비스 포트를 9000으로 내.외부 연결을 하고 컨테이너 Volume으로 "portainer_data"를 사용합니다.
그리고 --restart=always 는 도커 시작시 자동으로 도커가 작동 되도록 설정합니다.
[Portainer 시작]
docker run -d -p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data \
--restart=always --name portainer portainer/portainer
[Docker 작동 상태 확인]
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ede294c869cc portainer/portainer "/portainer" About a minute ago Up About a minute 8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp portainer
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
portainer/portainer latest 5f11582196a4 13 months ago 287MB
- -d: 컨테이너를 백그라운드에서 실행합니다.
- -p 9000:9000: 포트 매핑으로 Portainer 웹 인터페이스에 접속할 수 있도록 합니다.
- -v /var/run/docker.sock:/var/run/docker.sock: Docker 소켓을 컨테이너에 마운트하여 Docker와 통신합니다.
- -v portainer_data:/data: 앞서 생성한 볼륨을 컨테이너의 /data 경로에 마운트하여 데이터를 영속적으로 저장합니다.
- --restart=always : docker를 기동하면 자동으로 실행 합니다.
- --name portainer: 컨테이너에 이름을 부여 할 수 있습니다.
- portainer/portainer : 실행할 이미지의 이름입니다.
4. Portainer 접속하기
웹브라우저를 통해 설치된 호스트의 9000 Port 로 접속을 합니다.
4.1 웹 브라우저에서 접속 :
- 브라우저에서 http://localhost:9000 또는 해당 호스트의 IP 주소 및 포트로 Portainer에 접속합니다.
4.2 Portainer 설정:
- 처음 접속하면 Portainer 초기 설정을 위한 페이지가 표시됩니다. 여기서 관리자 계정을 설정하고, Portainer가 관리할 Docker 환경을 선택합니다.
4.1 웹 브라우저에서 Portainer - 접속하기
http://192.168.0.xx:9000/로 접속하면 아래와 같이 로그인 화면이 나옵니다.
*초기 접속을 위해서 적당한 Password를 8자 이상 입력하고 하단의 "Create User" 버튼을 누릅니다.
4.2 Portainer 설정 - Docker 환경 접근
Portainer는 로컬 및 원격 서버도 접근하여 관리가 가능합니다.
여기서는 "Local"을 선택하여 로컬 서버에서 작동 되는 Docker를 접근하고자 합니다.
* "Local" 을 선택한 후 "Connect" 버튼을 눌러 접속합니다.
* local -Home 화면에서는 도커 컨테이너 상태를 확인합니다. 1개의 컨테이너에 1개의 volume과 이미지가 사용중 입을 알수 있고, Local 하단의 Dashboard 및 다양한 메뉴를 통해서 도커를 관리 할 수 있습니다.
4.3 Portainer 설정 - Dashboard 접속
Portainer의 dashboard는 작동중인 도커 컨테이너 환경을 샹태를 간단히 보여 줍니다.
4.4 Portainer 설정 - Volume 생성
- 좌측 메뉴에서 Volume를 선택하여 볼륨을 관리 할 수 있습니다.
Volume 를 새로 생성하기 버턴을 누르면 Name(이름)을 입력 하고 " Create the Volume" 버턴를 누르면 됩니다.
필자는 예시로 Mysql을 설치하고자 "docker_dbms" Volume을 만들었습니다.
아래와 같이 새로운 volume으로 "docker_dbms" 가 생성된 것을 확인 할 수 있습니다.
4.5 Portainer 설정- Container 생성
Container 화면에서는 Volume 생성과 마찬가지로 Container 생성도 쉽게 할수 있고 컨테이너의 시작,종료,삭제 중지그리고 컨테이너 이름을 변경 할 수 있습니다.
4.6 Add Container - Mariadb 컨테이너 생성
1) 컨테이너 이름으로 "mariadb" 라고 입력하고 image에 "mariadb/server" 라고 입력 하였습니다.
mariadb의 특정 버전을 원한다면 "mariadb/server:10.3" 과 같이 입력 가능합니다.
- 컨테이너 이미지 검색을 해서 mariadb를 검색하여 선택합니다.
수동으로 mariadb 이미지를 받을수 있습니다.
# 콘솔에서 Mariadb 이미지를 Pull 합니다.
[root@vm1 data]# docker pull mariadb
Using default tag: latest
latest: Pulling from library/mariadb
3dd181f9be59: Pull complete
304a7e51ee09: Pull complete
72b8a6ebd591: Pull complete
56cb545d2ee4: Pull complete
0b9aaebc7c63: Pull complete
3b35d6b19e4c: Pull complete
d047325b2dd9: Pull complete
7fb0ceda8ad2: Pull complete
Digest: sha256:9da6213d1a5714c4585c9c0003c51510b320d6f60e53d78701fe1e194126249f
Status: Downloaded newer image for mariadb:latest
docker.io/library/mariadb:latest
다음과 같이 docker.io 에 "mariadb"를 입력하면 자동으로 다운 로드 받습니다.
2) 네트웍 Port 매핑을 위해서 "publish a new network port" 버튼을 누르고
host와 container에 mysql 이 사용하는 "3306"을 입력 합니다.
3) mariadb 구동을 위해서 환경 변수 설정 설정이 필요합니다.
(3-1) "Env" 버튼을 눌러서 기동시 사용할 환경 변수를 설정 합니다.
* PUID,PGID 와 같이 컨테이너의 권한을 2000으로 설정 하였습니다.
* MYSQL_ROOT_PASSWORD 는 실행시 초기 비밀 번호 이므로 중요한 변수 입니다.
(3-2) "Volume" 버튼을 눌러서 기동에 필요한 환경 파일을 연결 합니다.
[ mysql data 와 mysql 기동을 위한 my.cnf 파일을 외부에 두는 방법입니다.]
* container에는 "/var/lib/mysql" 와 우측 "Bind"를 선택하고
-> host 에는 이미 생성해둔 "/data/docker_env/mariadb/mydata"를 선택하면 됩니다.
console 에서 "/data/docker_env/mariadb" 를 생성해 둡니다.
4) "Deplay the container" 버튼을 누르면 도커 이미지를 생성합니다.
5) 도커 이미지가 생성되면 아래와 같이 "mariadb" 가 새로운 이미지가 목록에 보여 집니다.
mariadb/server:latest로 기본 설정으로 작동 되므로 필요한 옵션을 추가하여 작성하여야 합니다.
docker create \
--name=mariadb \
-e MYSQL_ROOT_PASSWORD=myroot \
-e TZ=Asia/Seoul \
-p 3306:3306 \
-v /data/docker_env/mariadb/my.cnf:/etc/my.cnf \
-v /data/docker_env/mariadb/mydata:/var/lib/mysql \
mariadb/server:latest
위와 같은 도커 커멘드로 이미지 생성을 해 보았습니다만 조금 복잡하다는 느낌이 있습니다.
그래서 다음 글인 "CentOS Docker 꿀팁 - Portainer 이미지 템플릿 사용하기" 를 보시면서 좀더 쉽고 편리하게 도커 이미지를 만들수 있는 예를 참고 하시면 좋겠습니다.
* Docker 꿀팁 - Portainer 이미지 템플릿 사용하기
- https://couplewith.tistory.com/m/186