
특별한 경우가 아닌 한, 용량을 줄이기 위해 Docker Container에는 편집기가 없습니다. 그래서 보통은 컨테이너를 구동하는 호스트에 볼륨을 마운트하고 그 위치에서 파일을 작성하여 컨테이너와 공유합니다.
그런데, 벌써 컨테이너를 구동하여 사용하고 있는 경우, 또는 컨테이너 내부에서 사용되는 사용자의 uid가 호스트의 uid와 다르다면 갑자기 피곤함을 느끼고 의욕이 저하되기도 합니다. 몇 줄 안되는 설정을 담고 있는 파일 하나 추가하자고, 볼륨 설정하고 권한 변경하고 파일 작성 하고 수정하고 다시 컨테이너 구동하고...
그래서 간단한 파일을 만드는 경우 유용하게 쓸 수 있는 팁을 소개합니다.
1. echo
간단하게 echo 명령과 리디렉션(">" 또는 ">>")을 이용하는 방법이 있습니다. 한 두 줄의 내용을 추가할 때 주로 사용하면 좋습니다.
# 새로운 파일 생성
? echo "작성할 내용" > file.txt
# 기존 파일에 추가.
? echo "덧붙일 내용" >> file.txt
이 방법은 간단하지만, 추가할 내용이 많다면 다시 또 귀찮음이 몰려오는 방법입니다. 매번 echo 를 써줘야 하고 파일 명도 적어줘야 하고..
2. here document
두번째 방법은 here document를 이용하는 방법입니다. "<<" 또는 "<<-"를 이용하는 것인데, 여러 라인의 커맨드를 입력할 수 있도록 해주는 것입니다. 이 연산자를 cat 명령과 조합해서 파일을 만들 수 있습니다.
가령, 데이터 베이스 설정 내용을 가지는 config.yml 파일을 만든다고 했을 때, 설정 파일에 담겨야 할 내용은 host, port, database, user, password 정도는 가지고 있어야 할 것입니다. 이런 내용을 가지는 config.yml을 파일을 만드는 방법은 다음과 같습니다.
? cat > config.yml << END
> host: localhost
> port: 3306
> database: test_database
> user: bitlog
> password: hard-p@ssw0rd
> END
"<<" 연산자 뒤에 파일 구분자를 시작으로 내용을 작성하고 작성이 완료되면 파일 구분자를 다시 입력하는 것으로 config.yml 파일이 생성됩니다. 파일 구분자는 작성하려는 내용에 포함되지 않는다면 어떤 것을 사용하여도 무방합니다. ( "EOF"를 사용하는 예제를 많이 찾아볼 수 있습니다. )
지금까지 간단히 파일을 만들고 내용을 추가할 수 있는 방법을 적었습니다. 물론, 위에 설명한 방법이 간단하기는 하지만, 추가할 파일을 이미 가지고 있다거나, 추가할 파일의 갯수나 내용이 많은 경우에는 볼륨을 이용해 host에서 직접 편집기를 사용하여 작성하는 것이 정신건강에 이로울 수 있습니다.