【AWS】EC2내의 Docker를, EFS와 마운트 해 보았습니다

5783 단어 EC2도커EFSAWS

소개



EC2에 설치된 Docker를 AWS EFS와 마운트하는 것을 시도했습니다.
절차를 게시하고 싶습니다.
· EC2 OS : 우분투 20.04.2 LTS
・Docker 버전:Docker version 20.10.8, build 3967b7d

구성도



간단히 설명하면
1.EC2 내에 Docker를 설치해 둡니다.
2. EFS가 EC2와 마운트되어 있습니다.
3.Docker가 EFS와의 마운트를 실현할 수 있습니다.


1.EC2 내에 Docker 설치



Ubuntu에 Docker를 설치할 때 다음 기사가 매우 도움이되었습니다.

기사에 따라 설치 작업을 마치면 Dokcer 설치가 성공적으로 완료되었습니다.
$ docker --version
Docker version 20.10.8, build 3967b7d

2.EC2와 EFS를 마운트



EFS의 작성 순서는 여기서 할애하겠습니다.
EC2와 EFS의 마운트 방법은 아래의 기사가 매우 참고가 되었습니다.

기사에 따라 조작하면 EC2에 /mnt/efs 디렉토리를 작성하여 EFS와의 마운트를 실현할 수 있습니다.
$ df -h
Filesystem                                      Size  Used Avail Use% Mounted on
/dev/root                                        20G  2.2G   18G  12% /
devtmpfs                                        1.9G     0  1.9G   0% /dev
tmpfs                                           1.9G     0  1.9G   0% /dev/shm
tmpfs                                           388M  900K  387M   1% /run
tmpfs                                           5.0M     0  5.0M   0% /run/lock
tmpfs                                           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/loop1                                       26M   26M     0 100% /snap/amazon-ssm-agent/4544
/dev/loop0                                       34M   34M     0 100% /snap/amazon-ssm-agent/3552
/dev/loop3                                       71M   71M     0 100% /snap/lxd/19647
/dev/loop4                                       33M   33M     0 100% /snap/snapd/11588
/dev/loop2                                       56M   56M     0 100% /snap/core18/1997
fs-XXXXXXXXX.efs.ap-northeast-1.amazonaws.com:/  8.0E     0  8.0E   0% /mnt/efs
overlay                                          20G  2.2G   18G  12% /var/lib/docker/overlay2/193018e5f21d57c9462cc7f9d6ed33f83a59506c599d3d4739d3d81712c52469/merged
tmpfs                                           388M     0  388M   0% /run/user/0
/etc/fstab에 EFS 정보를 등록하면 EC2가 시작될 때 자동으로 EFS와 마운트를 실현할 수 있습니다.
$ cat /etc/fstab
LABEL=cloudimg-rootfs   /        ext4   defaults,discard        0 1
fs-XXXXXXXXX:/ /mnt/efs  efs    defaults,_netdev  0 0

EFS 내에 확인용 lalala.txt 파일을 작성해, 안에 적당하게 문자를 넣어 둡니다.
$ pwd
/mnt/efs
$ sudo touch lalala.txt
$ sudo chmod 775 lalala.txt
$ sudo vi lalala.txt
$ cat lalala.txt
123123lalala

3.Docker와 EFS 사이의 마운트 실현



이번에는 nginx의 Docker를 사용하여 EFS와의 마운트를 시도했습니다.

먼저 nginx Dokcer를 설치하기 전에 Docker가 없는지 확인하십시오.
$ sudo docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

EC2의 /mnt/efs는 이미 EFS와 마운트되어 있으므로,
이제 nginx docker에 /mnt/efs를 EC2에 /mnt/efs를 탑재하고,
Docker와 EFS의 마운트를 실현합니다.
$ sudo docker run --privileged=true -it --name nginx -d -p 8080:80 -v /mnt/efs:/mnt/efs nginx /bin/bash
369b6256d0ff62337abb2ca2067a90de2053253da379502fdccc3a95cbe92937

계속해서 ngixn의 Docker 상태를 확인해, 기동되어 있는 것을 확인하고 있습니다.
$ sudo docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                   NAMES
369b6256d0ff   nginx     "/docker-entrypoint.…"   31 seconds ago   Up 31 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp   nginx

nginx의 Docker 내부에 연결합니다.
$ sudo docker exec -it 369b6256d0ff bash
root@369b6256d0ff:/#

nginx Docker 내부의 /mnt/efs로 이동합니다.
root@369b6256d0ff:/# ls -all
total 80
drwxr-xr-x   1 root root 4096 Aug  6 03:33 .
drwxr-xr-x   1 root root 4096 Aug  6 03:33 ..
-rwxr-xr-x   1 root root    0 Aug  6 03:33 .dockerenv
drwxr-xr-x   2 root root 4096 Jul 21 00:00 bin
drwxr-xr-x   2 root root 4096 Jun 13 10:30 boot
drwxr-xr-x  10 root root 3020 Aug  6 03:33 dev
drwxr-xr-x   1 root root 4096 Jul 22 10:13 docker-entrypoint.d
-rwxrwxr-x   1 root root 1202 Jul 22 10:12 docker-entrypoint.sh
drwxr-xr-x   1 root root 4096 Aug  6 03:33 etc
drwxr-xr-x   2 root root 4096 Jun 13 10:30 home
drwxr-xr-x   1 root root 4096 Jul 22 10:13 lib
drwxr-xr-x   2 root root 4096 Jul 21 00:00 lib64
drwxr-xr-x   2 root root 4096 Jul 21 00:00 media
drwxr-xr-x   1 root root 4096 Aug  6 03:33 mnt
drwxr-xr-x   2 root root 4096 Jul 21 00:00 opt
dr-xr-xr-x 177 root root    0 Aug  6 03:33 proc
drwx------   2 root root 4096 Jul 21 00:00 root
drwxr-xr-x   3 root root 4096 Jul 21 00:00 run
drwxr-xr-x   2 root root 4096 Jul 21 00:00 sbin
drwxr-xr-x   2 root root 4096 Jul 21 00:00 srv
dr-xr-xr-x  13 root root    0 Aug  6 03:33 sys
drwxrwxrwt   1 root root 4096 Jul 22 10:13 tmp
drwxr-xr-x   1 root root 4096 Jul 21 00:00 usr
drwxr-xr-x   1 root root 4096 Jul 21 00:00 var
root@369b6256d0ff:/# cd /mnt/efs
root@369b6256d0ff:/mnt/efs# pwd
/mnt/efs

EFS의 파일이 Docker에 있는지 확인할 수 있습니다.
root@369b6256d0ff:/mnt/efs# ls
lalala.txt
root@369b6256d0ff:/mnt/efs# cat lalala.txt
123123lalala

또한 nginx Docker 내에 파일을 만들려고했습니다.
root@369b6256d0ff:/mnt/efs# touch dadada.txt
root@369b6256d0ff:/mnt/efs# ls
dadada.txt  lalala.txt

nginx의 Docker를 로그 아웃하고 EC2 화면으로 돌아가 EC2에서 EFS의 내용을 확인해 두면 마찬가지로 방금 만든 파일이 있는지 확인할 수 있습니다.
root@369b6256d0ff:/mnt/efs# exit
exit
$ pwd
/mnt/efs
$ ls
dadada.txt  lalala.txt

이제 EC2 내의 Docker를 EFS와 마운트는 실현할 수 있었습니다.

좋은 웹페이지 즐겨찾기