250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Exception
- Source
- IntelliJ
- jpa
- oracle
- 오픈소스
- Core Java
- STS
- Spring Boot
- error
- Python
- PostgreSQL
- git
- JavaScript
- MSSQL
- spring
- Docker
- MySQL
- ubuntu
- JDBC
- AJAX
- Eclipse
- maven
- myBatis
- Thymeleaf
- Open Source
- Tomcat
- SpringBoot
- 설정
- 문서
Archives
- Today
- Total
헤르메스 LIFE
[Docker] Ubuntu 에 Docker 설치 본문
728x90
설치 환경
Ubuntu 22.04.3 LTS
Postgresql 최신 ( en_US.utf8 버전 )
Postgresql 14.1 ( ko_KR.utf8 버전 )
Redis 최신
MySQL 최신
1. Docker 설치
# 우분투 시스템 패키지 업데이트
$ sudo apt-get update
# 필요한 패키지 설치
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# Docker의 공식 GPG키를 추가
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Docker의 공식 apt 저장소를 추가
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 시스템 패키지 업데이트
$ sudo apt-get update
# Docker 설치
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
# Docker가 설치 확인
$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2024-02-04 13:00:01 KST; 44s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 17937 (dockerd)
Tasks: 14
Memory: 31.3M
CPU: 493ms
CGroup: /system.slice/docker.service
└─17937 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
2월 04 13:00:01 ubuntu-park systemd[1]: Starting Docker Application Container Engine...
2월 04 13:00:01 ubuntu-park dockerd[17937]: time="2024-02-04T13:00:01.224355944+09:00" level=info msg="Sta>
2월 04 13:00:01 ubuntu-park dockerd[17937]: time="2024-02-04T13:00:01.225281453+09:00" level=info msg="det>
2월 04 13:00:01 ubuntu-park dockerd[17937]: time="2024-02-04T13:00:01.325635511+09:00" level=info msg="Loa>
2월 04 13:00:01 ubuntu-park dockerd[17937]: time="2024-02-04T13:00:01.725682810+09:00" level=info msg="Loa>
2월 04 13:00:01 ubuntu-park dockerd[17937]: time="2024-02-04T13:00:01.740688397+09:00" level=info msg="Doc>
2월 04 13:00:01 ubuntu-park dockerd[17937]: time="2024-02-04T13:00:01.740824431+09:00" level=info msg="Dae>
2월 04 13:00:01 ubuntu-park dockerd[17937]: time="2024-02-04T13:00:01.775524751+09:00" level=info msg="API>
2월 04 13:00:01 ubuntu-park systemd[1]: Started Docker Application Container Engine.
2. Docker 시작
# Docker 서비스 시작
$ sudo systemctl start docker
# Docker 재시작
$ sudo systemctl restart docker
3. Docker 종료
4. 부팅 시 자동 시작
# 부팅 시 자동 시작 설정
$ sudo systemctl enable docker
Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable docker
5. Docker 그룹에 현재 사용자 추가 ( sudo 권한 없이 Docker 명령을 사용하기 위함, 로그아웃 후 다시 로그인 )
# Docker 그룹에 현재 사용자 추가 (sudo 권한 없이 Docker 명령을 사용하기 위함, 로그아웃 후 다시 로그인)
$ sudo usermod -aG docker $USER
6. Docker 버전 확인
# Docker 버전 확인
$ docker --version
Docker version 25.0.2, build 29cf629
7. Docker Images 확인
# Docker Images 확인
$ docker images
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json": dial unix /var/run/docker.sock: connect: permission denied
-> sudo usermod -aG docker $USER
-> 로그아웃 > 로그인
# Docker Images 확인
$ sudo docker images
8. Docker 에 Database 설치
8-1. 영문 Postgresql 설치
# postgresql 을 다운로드
$ docker pull postgres
# 다운로드된 Images 확인
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
postgres latest b0b90c1d9579 4 weeks ago 425MB
# Docker postgres 컨테이너 생성
# -d : 백그라운드 실행
# -p 포트 포딩 5432번 포트로 들어온 내용은 5432 번 포트로 포딩을 해주겟다는 내용
# -e 환경변수 설정 POSTRGRES_PASSWORD= 내용을 password로 설정
# --name Container 이름을 설정해줍니다.
docker run -p 5432:5432 --name postgres_boot -e POSTGRES_DB=springboot -e POSTGRES_USER=hermeswing -e POSTGRES_PASSWORD=pass -d postgres
b86312a74a29db09079f4f82bd9be497c3099cfea58a9d87bf605df313caef81
# docker에 설치된 컨테이너 목록 조회
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b86312a74a29 postgres "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres_boot
# Docker Server 접속
$ docker exec -it postgres_boot bash
root@b86312a74a29:/#
root@b86312a74a29:/# locale -a
C
C.utf8
en_US.utf8
POSIX
root@b86312a74a29:/# psql --username hermeswing --dbname springboot
psql (16.1 (Debian 16.1-1.pgdg120+1))
Type "help" for help.
springboot=# \l
List of databases
Name | Owner | Encoding | Locale Provider | Collate | Ctype | ICU Locale | ICU Rules | Access privileges
------------+------------+----------+-----------------+------------+------------+------------+-----------+---------------------------
postgres | hermeswing | UTF8 | libc | en_US.utf8 | en_US.utf8 | | |
springboot | hermeswing | UTF8 | libc | en_US.utf8 | en_US.utf8 | | |
template0 | hermeswing | UTF8 | libc | en_US.utf8 | en_US.utf8 | | | =c/hermeswing +
| | | | | | | | hermeswing=CTc/hermeswing
template1 | hermeswing | UTF8 | libc | en_US.utf8 | en_US.utf8 | | | =c/hermeswing +
| | | | | | | | hermeswing=CTc/hermeswing
(4 rows)
springboot=#
# Docker 컨테이너 멈춤
$ docker stop postgres_boot
# Docker 컨테이너 목록 확인
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8870b3eecebd postgres-ko:14.1 "docker-entrypoint.s…" 21 hours ago Exited (0) 17 hours ago postgres_boot
# Docker 컨테이너 시작
# docker start -a [CONTAINER ID 또는 NAMES]
# -a option 은 --attach 의 약자로 postgres의 log를 보겠다는 뜻
# docker start 8870b3eecebd
$ docker start postgres_boot
# Docker 컨테이너 삭제
$ docker rm postgres_boot
8-2. 한글 Postgresql 설치
8-2-1. Dockerfile 파일생성
$ vi Dockerfile
# 아래의 내용을 복사해서 붙여 넣는다.
FROM postgres:14.1
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime && \
sed -i 's/# ko_KR.UTF-8 UTF-8/ko_KR.UTF-8 UTF-8/' /etc/locale.gen && \
locale-gen
ENV LANG=ko_KR.utf8 \
LC_COLLATE=ko_KR.utf8 \
POSTGRES_INITDB_ARGS=--data-checksums
# 저장합니다.
:wq
8-2-2. Dockerfile 파일생성
# Dockerfile 이 생성된 내용
$ ll
-rw-rw-r-- 1 jypark jypark 264 2월 4 21:42 Dockerfile
8-2-3. Docker 이미지 생성 ( Dockerfile 이 존재하는 폴더에서 명령을 실행해야 합니다. )
# Docker 이미지 생성 ( Dockerfile 이 존재하는 폴더에서 명령을 실행해야 합니다. )
$ docker build -t postgres-ko:14.1 .
# Docker 이미지 확인
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
postgres-ko 14.1 0a422413f5b8 7 minutes ago 375MB
postgres latest b0b90c1d9579 4 weeks ago 425MB
8-2-4. postgres-ko 설치 ( 영문버전 설치 하셨다면 삭제 후 다시 설치 )
# postgres-ko 설치
$ docker run -p 5432:5432 --name postgres_boot -e POSTGRES_DB=springboot -e POSTGRES_USER=hermeswing -e POSTGRES_PASSWORD=pass -d postgres-ko:14.1
# postgres_boot 접속
$ docker exec -it postgres_boot bash
# locale 확인 ( ko_KR.utf8 이 있네요. )
root@8870b3eecebd:/# locale -a
C
C.UTF-8
POSIX
ko_KR.utf8
# springboot DB 접속
root@8870b3eecebd:/# psql --username hermeswing --dbname springboot
psql (14.1 (Debian 14.1-1.pgdg110+1))
도움말을 보려면 "help"를 입력하십시오.
# DB 목록 확인
springboot=# \l
데이터베이스 목록
이름 | 소유주 | 인코딩 | Collate | Ctype | 액세스 권한
------------+------------+--------+------------+------------+---------------------------
postgres | hermeswing | UTF8 | ko_KR.utf8 | ko_KR.utf8 |
springboot | hermeswing | UTF8 | ko_KR.utf8 | ko_KR.utf8 |
template0 | hermeswing | UTF8 | ko_KR.utf8 | ko_KR.utf8 | =c/hermeswing
| | | | | hermeswing=CTc/hermeswing
template1 | hermeswing | UTF8 | ko_KR.utf8 | ko_KR.utf8 | =c/hermeswing
| | | | | hermeswing=CTc/hermeswing
(4개 행)
8-3. Redis 설치
# redis 다운로드
$ docker pull redis
Using default tag: latest
latest: Pulling from library/redis
c57ee5000d61: Already exists
a378724be99b: Pull complete
5224cb0f59c4: Pull complete
ef9d9b4b1db0: Pull complete
234f81aa6553: Pull complete
1c1f1738e37a: Pull complete
4f4fb700ef54: Pull complete
a4eb7afb9a79: Pull complete
Digest: sha256:f44e91787b843612a3878d8d8fae227b9db63f471214314f5b2e73576ca633d0
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
# 다운로드된 이미지 확인
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
postgres-ko 14.1 0a422413f5b8 27 minutes ago 375MB
redis latest 3ceffe93e5ee 3 weeks ago 138MB
postgres latest b0b90c1d9579 4 weeks ago 425MB
# redis-net 이라는 Docker Network를 생성한다.
$ docker network create redis-net
b4cf6c758f713478361e7cf590fa9d22ec890ffd547e008a2c3c2e2d1a9b1f52
# Docker Redis 컨테이너 생성
$ docker run --name redis_boot -p 6379:6379 --network redis-net -v redis_boot:/data -d redis redis-server --appendonly yes
68a29cd6a49a9bc5e06d7418a286ce087746d5687ba58902387f8dc9ea25b73c
# docker에 설치된 컨테이너 목록 조회
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
68a29cd6a49a redis "docker-entrypoint.s…" 15 seconds ago Up 14 seconds 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis_boot
8870b3eecebd postgres-ko:14.1 "docker-entrypoint.s…" 15 minutes ago Up 15 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres_boot
# Docker Redis 컨테이너 접속
$ docker run -it --network redis-net --rm redis redis-cli -h redis_boot
redis_boot:6379>
8-4. MySQL 설치
# docker에 mysql 이미지 설치
$ docker pull mysql
# Docker 컨테이너 생성
# -d : 백그라운드 실행
# -p 포트 포딩 5432번 포트로 들어온 내용은 5432 번 포트로 포딩을 해주겟다는 내용
# -e 환경변수 설정 POSTRGRES_PASSWORD= 내용을 password로 설정
# --name Container 이름을 설정해줍니다.
# docker exec -> run a command on an existing/running container
# docker run -> create a new container from an image, and run the command there
$ docker run -d -p 3306:3306 --name mysql_boot -e MYSQL_ROOT_PASSWORD=1 -e MYSQL_DATABASE=springboot -e MYSQL_USER=hermeswing -e MYSQL_PASSWORD=pass -d mysql
# 생성된 Docker 컨테이너 확인
$ docker ps -a
# Docker MySQL 컨테이너 접속
$ docker exec -it mysql_boot bash
# mysql version 확인
# mysql -v
# mysql 접속 password : 1
# mysql -u root -p
# Docker 컨테이너 시작
$ docker start mysql_boot
# Docker 컨테이너 멈춤
$ docker stop mysql_boot
# Docker 컨테이너 삭제
$ docker rm mysql_boot
각 컨테이너가 시작됐는지 여부를 확인해서 컨테이너를 실행하는 Script 예제
docker 컨테이너 확인
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
68a29cd6a49a redis "docker-entrypoint.s…" 3 days ago Exited (0) 33 hours ago redis_boot
8870b3eecebd postgres-ko:14.1 "docker-entrypoint.s…" 3 days ago Up 14 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres_boot
postgresql_start.sh
#!/bin/zsh
# 컨테이너 이름 또는 ID를 여기에 입력하세요.
CONTAINER_NAME="postgres_boot"
# 컨테이너가 실행 중인지 확인
RUNNING=$(docker inspect --format="{{.State.Running}}" $CONTAINER_NAME 2>/dev/null)
# 컨테이너가 실행 중이 아니면 시작
if [ "$RUNNING" != "true" ]; then
echo "PostgreSQL이 실행 중이 아닙니다. 시작 중..."
docker start $CONTAINER_NAME
echo "PostgreSQL 이 시작되었습니다."
else
echo "PostgreSQL 이 이미 실행 중입니다."
fi
실행 권한 추가
$ chmod 766 postgresql_start.sh
시작
# Docker 컨테이너를 백그라운드에서 실행
# docker start postgres_boot
$ ./postgresql_start.sh
PostgreSQL 이 이미 실행 중입니다.
# Docker 컨테이너 중지
$ docker stop postgres_boot
postgres_boot
$ ./postgresql_start.sh
PostgreSQL 이 실행 중이 아닙니다. 시작 중...
postgres_boot
PostgreSQL 이 시작되었습니다.
출처 : https://velog.io/@osk3856/Docker-Ubuntu-22.04-Docker-Installation
https://zerostarting.tistory.com/61
https://hermeslog.tistory.com/541
https://hermeslog.tistory.com/635
https://hermeslog.tistory.com/540
728x90
'기타' 카테고리의 다른 글
[Ubuntu] zsh Shell Script (2) | 2024.02.09 |
---|---|
[Ubuntu] Ubuntu 를 사용 할 때 좋은 유틸리티 (2) | 2024.02.06 |
[Ubuntu] Display 해상도 설정 (0) | 2024.02.04 |
[Ubuntu] Ubuntu 를 사용해보려 합니다. (2) | 2024.02.03 |
[MacBook Pro] 2009년 MacBook Pro 에 Linux 설치 하기 (0) | 2024.02.03 |