Docker Hub 사이트 https://hub.docker.com
docker hub 사이트에서 mysql 검색한 후에 아래 명령어로 docker image를 가지고 온다.
- docker pull mysql:8.0.24
- 설치 확인
docker images
- Mysql 실행 docker이미지가 없으면 자동으로 다운받아서 실행까지 해줌
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name cbw-mysql -v c:\springboot\db:/var/lib/mysql mysql:8.0.24 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
- docker 실행 확인
- docker ps -a
C:\springboot>docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f4337edf5917 mysql:8.0.24 "docker-entrypoint.s…" 32 minutes ago Up 32 minutes 33060/tcp, 0.0.0.0:3305->3306/tcp cbw-mysql
- 새로운 image생성은 commit 명령을 통해 수행하며, docker 컨테이너 ID와 신규 생성된 이미지의 이름과 Tag를 추가해서 생성할 수 있다.
> docker commit -a “by cbw" f4337edf5917 cbw-mysql:8.0.24
/* 실제로 추가되어서 용량에 변경이 되면 변경된 부분만 레이어가 생성되어서 사이즈가 증가된다.
C:\springboot>docker commit -a "by cbw" f4337edf5917 cbw-mysql:8.0.24
sha256:4d3a14ada49a11c1803a610af109a9d314c582118b14174a6ccbbcdfe5551d4d
/* 이미지 생성확인 */
C:\springboot>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
cbw-mysql 8.0.24 4d3a14ada49a 11 seconds ago 556MB
mysql 8.0.24 0627ec6901db 6 days ago 556MB
신규 생성된 이미지가 어떤 이미지 레이어로 구성되었는지를 확인하기 위해서는 “history” 명령을 통해 확인 할 수 있다.
C:\springboot>docker history cbw-mysql:8.0.24
IMAGE CREATED CREATED BY SIZE COMMENT
4d3a14ada49a 3 minutes ago --character-set-server=utf8mb4 --collation-s… 44B
0627ec6901db 6 days ago /bin/sh -c #(nop) CMD ["mysqld"] 0B
<missing> 6 days ago /bin/sh -c #(nop) EXPOSE 3306 33060 0B
<missing> 6 days ago /bin/sh -c #(nop) ENTRYPOINT ["docker-entry… 0B
<missing> 6 days ago /bin/sh -c ln -s usr/local/bin/docker-entryp… 34B
<missing> 6 days ago /bin/sh -c #(nop) COPY file:345a22fe55d3e678… 14.5kB
<missing> 6 days ago /bin/sh -c #(nop) COPY dir:2e040acc386ebd23b… 1.12kB
<missing> 6 days ago /bin/sh -c #(nop) VOLUME [/var/lib/mysql] 0B
<missing> 6 days ago /bin/sh -c { echo mysql-community-server m… 420MB
<missing> 6 days ago /bin/sh -c echo 'deb http://repo.mysql.com/a… 55B
<missing> 6 days ago /bin/sh -c #(nop) ENV MYSQL_VERSION=8.0.24-… 0B
<missing> 2 weeks ago /bin/sh -c #(nop) ENV MYSQL_MAJOR=8.0 0B
<missing> 2 weeks ago /bin/sh -c set -ex; key='A4A9406876FCBD3C45… 2.61kB
<missing> 2 weeks ago /bin/sh -c apt-get update && apt-get install… 52.2MB
<missing> 2 weeks ago /bin/sh -c mkdir /docker-entrypoint-initdb.d 0B
<missing> 2 weeks ago /bin/sh -c set -eux; savedAptMark="$(apt-ma… 4.17MB
<missing> 2 weeks ago /bin/sh -c #(nop) ENV GOSU_VERSION=1.12 0B
<missing> 2 weeks ago /bin/sh -c apt-get update && apt-get install… 9.34MB
<missing> 2 weeks ago /bin/sh -c groupadd -r mysql && useradd -r -… 329kB
<missing> 2 weeks ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 2 weeks ago /bin/sh -c #(nop) ADD file:c855b3c65f5ba94d5… 69.3MB
docker run -d -p 3307:3306 --name cbw-copysql -it cbw-mysql:8.0.24
/* 실행 확인 */
C:\WINDOWS\system32>docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
25d187f4e942 cbw-mysql:8.0.24 "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 33060/tcp, 0.0.0.0:3307->3306/tcp cbw-copysql
f4337edf5917 mysql:8.0.24 "docker-entrypoint.s…" 52 minutes ago Up 52 minutes 33060/tcp, 0.0.0.0:3305->3306/tcp cbw-mysql
신규로 새로 생성된 이미지는 기존이미지를 참조 하고 있기 때문에 신규생성 이미지를 먼저 삭제하고 기존 이미지를 삭제해야 삭제가 된다.
도커의 이미지는 save 명령을 통해 압축하여 별도로 저장할 수 있다.
docker images
C:\WINDOWS\system32>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
cbw-mysql 8.0.24 4d3a14ada49a 57 minutes ago 556MB
mysql 8.0.24 0627ec6901db 6 days ago 556MB
--도커 저장
> docker save -o cbwmysql.tar cbw-mysql:8.0.24
--기존에 있던 이미지를 삭제하고 추출한 이미지를 로딩한다.
-- container 에 기동중이면 중지후에 삭제할수 있다
docker ps -a
C:\springboot>docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
25d187f4e942 cbw-mysql:8.0.24 "docker-entrypoint.s…" 53 minutes ago Up 53 minutes 33060/tcp, 0.0.0.0:3307->3306/tcp cbw-copysql
f4337edf5917 mysql:8.0.24 "docker-entrypoint.s…" 2 hours ago Up 2 hours 33060/tcp, 0.0.0.0:3305->3306/tcp cbw-mysql
C:\springboot>docker stop 25d187f4e942
25d187f4e942
/* 컨테이너 삭제 후에 이미지 삭제 가능 */
docker rm 25d187f4e942
/* 이미지 삭제 */
docker rmi cbw-mysql:8.0.24
C:\springboot>docker rmi cbw-mysql:8.0.24
Untagged: cbw-mysql:8.0.24
Deleted: sha256:4d3a14ada49a11c1803a610af109a9d314c582118b14174a6ccbbcdfe5551d4d
Deleted: sha256:11b1c6200f1b0b66779c57b95f993947c580c9b7a42773a8b08f7ddfc997e3a1
/* 백업 받은 docker 파일 로딩 */
C:\springboot>docker load -i cbwmysql.tar
fe86b516c784: Loading layer [==================================================>] 7.168kB/7.168kB
Loaded image: cbw-mysql:8.0.24
C:\springboot>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
cbw-mysql 8.0.24 4d3a14ada49a About an hour ago 556MB
mysql 8.0.24 0627ec6901db 6 days ago 556MB
/* 백업해서 로딩된 데이터 잘 기동 되는지 확인 */
C:\springboot>docker run -d --name cbw-test cbw-mysql:8.0.24
D151bd14b58ccfc85d7b9f029f91773f2ad2cc6a657945e73e347f3ba5c1e2d8
/* 백업해서 로딩된 mysql이 로컬 에 있는 db내용을 그대로 가지고 오는지 확인 */
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root --name cbw-test -v c:\springboot\db:/var/lib/mysql cbw-mysql:8.0.24 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci //실행
C:\springboot>docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d151bd14b58c cbw-mysql:8.0.24 "docker-entrypoint.s…" 20 seconds ago Up 20 seconds 3306/tcp, 33060/tcp cbw-test
f4337edf5917 mysql:8.0.24 "docker-entrypoint.s…" 2 hours ago Up 2 hours 33060/tcp, 0.0.0.0:3305->3306/tcp cbw-mysql
/* docker hub repository 에 push 하기 */
현재 도커 이미지는 2개가 있는것올 확인
C:\springboot>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
cbw-mysql 8.0.24 4d3a14ada49a About an hour ago 556MB
mysql 8.0.24 0627ec6901db 6 days ago 556MB
기존 있는 이미지에 새로운 Tag를 부여해서 , Docker Hub에 로딩 시킬 준비를 한다.
이미지를 확인해 보면 기존 로컬에 만들어진 Docker Image를 복제해서 Docker Hub 계정에 로그인 할 이미지를 생성하였다.
직접 업로딩 하는 방법은 아래와 같다.
우선 docker machine/host에서 docker hub 계정에 로그인 한다.
C:\springboot>docker login
Authenticating with existing credentials...
Login Succeeded
/* 실제 올리는 이미지를 tag 옵션으로 생성한다. */
도커허브에 만든 이름과 똑같아야 올라간다.
에러나서 똑같이 이름 다시 만듬
만들어진 도커 이미지를 docker hub에 업로드 한다.
C:\springboot>docker tag cbw-mysql:8.0.24 cbwstar/cbw-mysql:8.0.24
C:\springboot>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
cbwstar/cbw-mysql 8.0.24 4d3a14ada49a 2 hours ago 556MB
cbwstar/mysql 8.0.24 4d3a14ada49a 2 hours ago 556MB
cbw-mysql 8.0.24 4d3a14ada49a 2 hours ago 556MB
mysql 8.0.24 0627ec6901db 6 days ago 556MB
/* 전송에러 */
C:\springboot>docker push cbwstar/cbw-mysql
Using default tag: latest
The push refers to repository [docker.io/cbwstar/cbw-mysql]
tag does not exist: cbwstar/cbw-mysql:latest
/* 전송 성공 */
C:\springboot>docker push cbwstar/cbw-mysql:8.0.24
The push refers to repository [docker.io/cbwstar/cbw-mysql]
fe86b516c784: Pushed
a39a1017a0d2: Mounted from library/mysql
b3d394514a9a: Mounted from library/mysql
5625adb0b34d: Mounted from library/mysql
4310f59b5563: Mounted from library/mysql
53d1fc0a3024: Mounted from library/mysql
1ce52ff7c16f: Mounted from library/mysql
2cb169012988: Mounted from library/mysql
2b1742830571: Mounted from library/mysql
7afbf38fd1da: Mounted from library/mysql
f68961560ec1: Mounted from library/mysql
76233144372b: Mounted from library/mysql
7e718b9c0c8c: Mounted from library/mysql
8.0.24: digest: sha256:caefa7026f1f8e37708b66561ca52ec96322eb9e40f010b11cb0ddf71e469fac size: 3035
/* 내가 올린 docker 파일 hub에서 받아서 잘 되는지 테스트 */
docker pull cbwstar/cbw-mysql:8.0.24
docker run -d -p 3305:3306 -e MYSQL_ROOT_PASSWORD=root --name mysql -v c:\springboot\db:/var/lib/mysql cbwstar/cbw-mysql:8.0.24 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci //실행
/* 실행시 docker-compose.yml 파일 만들어서 실행하면 옵션 안넣어도 되서 편하다 */
/* 실행할려고 하는 폴더에 파일 생성 */
version: "3.1"
services:
db:
image: mysql:8.0.24
container_name: mysql
ports:
- "3305:3306"
environment:
MYSQL_ROOT_PASSWORD: "root"
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
- c:\springboot\db:/var/lib/mysql
실행 docker-compose 파일 실행
- docker-compose.yml 작성한 위치에서 실행
- 백그라운드로 실행 시 옵션 -d 붙이면 됨.
- 자세한건 옵션 참고
docker-compose up -d
/* mysql 컨테이너 bash 쉘 접속 */
docker ps -a
C:\springboot>docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e17378e2e7a5 mysql:8.0.24 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 33060/tcp, 0.0.0.0:3305->3306/tcp mysql
docker exec -it mysql bash
root@e17378e2e7a5:/# id /* 접속 */
- mysql 접속
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.24 MySQL Community Server - GPL
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
/* 사용자 생성 */
create user 'cbw'@'%' identified by 'cbw';
GRANT ALL PRIVILEGES ON *.* TO 'cbw'@'%';
flush privileges;
create database insta DEFAULT CHARACTER SET utf8;
use insta;
quit
MySQL에 root로 접속 한 뒤
use mysql;
select host,user from user;
현재 생성된 db의 사용자 계정들을 확인할 수 있다.
사용자 계정 삭제
DROP USER [user명]@[server명];
ex) drop user user1@localhost;
Docker mysql 환경설정파일 경로 : /etc/mysql/conf.d/my.cnf
MySQL 한글 설정 (my.ini) or my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
init_connect='SET collation_connection = utf8_general_ci'
character-set-server=utf8
'프로그램 > 개발툴 설정' 카테고리의 다른 글
vsCode 개발자 폰트 설정 (0) | 2021.05.10 |
---|---|
Git 최초 설치후 사용법 (0) | 2021.05.10 |
Postgresql 설치 및 셋팅하기 (0) | 2021.05.10 |
Mysql 한글 인코딩 설정 (0) | 2021.05.10 |
Docker 리눅스 서버 vi 설치 (0) | 2021.05.10 |
댓글