[Docker, EC2, SCP] SCP 명령을 통해 로컬에서 EC2로 파일을 옮기는 과정에서 겪었던 야크 털 쉐이빙
데브옵스 부트캠프 세 번째 프로젝트에서 했던 야크털 깎기 중 최고봉은 바로바로 로컬에서 ec2로 scp
명령어를 통해 파일을 전달할 때 발생했던 삽질들이었다
목표는 로컬에서 EC2로 scp
명령어를 통해 도커 이미지 빌드에 필요한 파일들을 보낸 후, 이미지를 빌드하여 실행시켜 로컬이 아닌 EC2 환경에서 도커 이미지가 실행되도록 하는 과정이었다.
정말 많은 야크 털 쉐이빙 과정을 겪었는데 하나씩 풀어보겠다.
save는 돌아가는 길이에요
상황
docker 이미지를 로컬에서 ec2로 옮기기 위해 구글링을 해보던 중 이 글을 발견했다
이 글에 나와있는 설명을 간단하게 정리해보자면
- 로컬에서 docker 이미지를 만든다
- 이미지를 tar 확장자로
docker save
명령을 통해 저장한다 scp
명령을 통해 원격 서버로 tar 파일을 전송한다- 원격서버에서 전송된 tar 파일을
docker load
를 통해 이미지로 저장한다 - 저장된 도커 이미지를 실행한다
하다가 왜 tar 확장자로 저장하는지 이해가 안돼서 크루분께 여쭤봤더니 돌아오는 말..
save는 돌아가는 길이에요 save 쓰지마세요
네...
해결
그냥 Dockerfile만 ec2로 옮겨서 ec2에 이미지를 만든 뒤 run하기만 하면 됐다..
scp
로 Dockerfile과 index.html을 ec2로 옮겨준다- ec2에서 이미지를 빌드한다
- Run..
나갈때는 마음대로지만 들어올땐 아니란다
상황
scp
명령을 통해 Dockerfile과 index.html을 보내고싶은데 계속 권한 에러가 떴던 상황이었다
scp
명령어 사용법을 구글링으로 찾았을 때 다음과 같이 사용하는 것을 알 수 있었다
scp [옵션] [파일명] [원격지_id]@[원격지_ip]:[받는 위치]
그래서 명령어를 이렇게 썼더니
scp Dockerfile ubuntu@퍼블릭IP주소:/Dockerfile
응 안돼
[ubuntu@퍼블릭IP](mailto:ubuntu@퍼블릭IP): Permission denied (publickey).
lost connection
에러메시지를 복사해서 구글링을 해보니 역시 aws 레퍼런스를 잘 준비해놨다
이 레퍼런스(야크털 쉐이빙 지름길^^)대로 해보자면
- 로컬에서 ssh 퍼블릭 키 값을 복사한다
- 키 값 위치는
~/.ssh/id_rsa.pub
에서 확인할 수 있습니다
- ec2에서 다음 명령어를 실행해준다
$ echo '복사한 ssh 퍼블릭 키' >> /home/ubuntu/.ssh/authorized_keys
- 권한을 수정한다
$ sudo chown root:root /home $ sudo chmod 755 /home $ sudo chown ubuntu:ubuntu /home/ubuntu -R $ sudo chmod 700 /home/ubuntur /home/ubuntu/.ssh $ sudo chmod 600 /home/ubuntu/.ssh/authorized_keys
- ec2를 종료한다
다 하고 다시 위의 명령어를 실행했지만 같은 에러를 뱉었고, ec2에 다시 들어가려고 하자
띠용! ec2에 접속 자체가 안된다!!!
ec2 접속 명령어를 통해 접속을 시도해도 이전에 봤던 에러 [ubuntu@퍼블릭IP](mailto:ubuntu@퍼블릭IP): Permission denied (publickey).
를 반환하며 접속 자체가 안됐다
나갈때는 마음대로지만 들어올때는 아니란다도 아니고 허허
결국 ec2를 새로 만들게 되었다..
해결
이런 뻘짓을 안해도 scp
명령의 옵션을 통해 ec2에 간단하게 접속할 수 있었다
scp -i 'pem키_주소' index.html ubuntu@'퍼블릭IP':/index.html
아 허무하다
파일 경로 이슈
상황
위에서 사용한 scp 명령어를 사용하면 사실 또 다른 에러를 뱉는다
scp: /index.html: Permission denied
이건 진짜 멍청한 실수였다
경로를 /index.html
로 해놓으면 root 폴더에 index.html
파일을 옮긴다는 건데 당연히 권한 에러가 뜰 수 밖에 없다
해결
홈 디렉토리를 애용합시다 ㅎㅎ
scp -i 'pem키_주소' index.html ubuntu@'퍼블릭IP':/home/ubuntu/index.html
결론
- 새로운 명령을 사용할 때는 명령 사용법을 잘 알아봅시다
- 구글링 할 때 한 글만 보지 말고 다른 글들도 보면서 다양한 방법을 찾아봅시다
- EC2는 나쁩니다