참고 자료

https://www.youtube.com/watch?v=p_T5G1hJ35g

❌주의. 1.6.9 버전(websocket 설정하기 위해선 1.6.10 버전 이상으로 설치해야 한다.)

Dockerfile 생성

sudo vim Dockerfile # 파일 새로 만들기 (열기)

# Dockerfile 내용

    FROM ubuntu

    RUN apt-get update
    RUN apt-get install -y mosquitto
    RUN apt-get install -y mosquitto-clients

    CMD mosquitto # mosquitto 실행 명령

cat Dockerfile # 파일 저장 확인

Dockerfile 이미지로 만들기

[issue]

error checking context: 'no permission to read from '/home/ubuntu/.Xauthority''.

[solution]

https://stackoverflow.com/questions/60118436/docker-build-question-no-permission-to-read-from

이미지 실행

이미지 실행 확인

이미지 확인

컨테이너 실행

docker run -it mqtt_mosquitto:v1 /bin/bash

1. EC2 접속

2. 최신 mariadb docker image로 설치

  • docker pull mariadb

3. MariaDB 컨테이너 추가 및 구동

docker run --name mariadb -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mariadb mariadb

  • —name mariadb: 컨테이너 이름을 mariadb로 지정
  • -d: 컨테이너를 백그라운드로 실행
  • -p: 3306:3306: 호스트-컨테이너 간 포트 연결. 호스트에서 3306 포트 접속 시 컨테이너 3306 포트로 포워딩 됨
  • -e MYSQL_ROOT_PASSWORD=mariadb: 컨테이너 내 환경변수 설정. root 계정의 패스워드를 mariadb로 지정
  • mariadb: 다운로드 받은 이미지 이름

4. mariadb로 접속

  • docker exec -it mariadb /bin/bash
    • 정상적으로 접속되면 root 계정으로 컨테이너의 bash에 접속이 된다.
    • mariadb로 접속. 패스워드는 앞서 입력한 MYSQL_ROOT_PASSWORD 값mysql -u root -p

5. 한글을 사용하기 위해 characterset 변경

  1. status 명령어로 mariadb 상태 및 characterset 참조
  2. mariadb 컨테이너의 /etc/mysql/my.cnf 파일 수정
    • client → utf8mb4
    • mysql → utf8mb4
    • mysqld →
      • collation-server=utf8_unicode_ci
      • init-connect='SET NAMES utf8'
      • character-set-server = utf8
    • 변경된 내용 저장 후, 컨테이너 bash 접속 종료
    • 컨테이너 재가동
      • docker restart mariadb
    • 컨테이너 bash 접속, mariadb 접속 후 status 로 characterset utf8로 변경 확인한글을 사용하기 위해 characterset 변경
  3.  

 

cf. 컨테이너에서 vi 설치 (my.cnf 수정 중에 vi 가 없을 경우)

  1. 컨테이너의 os 확인: cat /etc/*-release
  2. vi 설치
apt-get update
apt-get install nano
apt-get install vim

 

다른 컨테이너에서 이미 이미지를 사용할 경우 발생하는 이슈

그 컨테이너가 실행 중이든 아니든 이미지를 사용한 컨테이너가 존재하고 있으면 이러한 충돌이 발생한다.

그 컨테이너를 다시 살려서 사용하든가 삭제한 후 다시 컨테이너를 생성해야 한다.

컨테이너 전체 목록 확인(stopped container 포함): docker ps -a

컨테이너 재실행: docker restart [containerId]

실행중인 컨테이너 확인: docker ps

+ Recent posts