docker - container에서 root 권한 명령어 실행(sudo)
SQL Server 2019 이미지의 경우 설치/실행하면 이런 메시지를 보게 됩니다.
c:\temp> docker run ...[생략]... mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04
c:\temp> docker run -it mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04
SQL Server 2019 will run as non-root by default.
This container is running as user mssql.
To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.
...[생략]...
실제로 컨테이너로 shell 접속을 해,
c:\temp> docker exec -it 7bd3e7787b5e /bin/bash
// docker run -it --name [...name...] [...image_name...] /bin/bash
mssql-conf 프로그램을 실행해 보면 다음과 같이 권한 부족 오류가 발생합니다.
$ /opt/mssql/bin/mssql-conf
This program must be run as superuser or as a user with membership in the mssql group.
애석하게 sudo 도구 자체가 제공이 안 되므로,
$ sudo
bash: sudo: command not found
애당초 root 권한으로 bash shell을 실행해야 하는데, 다행히 docker exec에서 제공하는 "u" 옵션을 붙여 해결할 수 있습니다.
// Root user in Docker Container 문서 참고
c:\temp> docker exec -itu 0 7bd3e7787b5e /bin/bash
이후 함께 실행된 명령어는 root 권한을 갖게 되는데, 위의 경우 /bin/bash를 지정했으므로 그 shell안에서는 root 권한이 필요한 명령어를 자유롭게 수행할 수 있습니다.
# /opt/mssql/bin/mssql-conf
usage: mssql-conf [-h] [-n] ...
positional arguments:
setup Initialize and setup Microsoft SQL Server
set Set the value of a setting
unset Unset the value of a setting
list List the supported settings
get Gets the value of all settings in a section or of an
individual setting
traceflag Enable/disable one or more traceflags
set-sa-password Set the system administrator (SA) password
set-collation Set the collation of system databases
validate Validate the configuration file
set-edition Set the edition of the SQL Server instance
validate-ad-config
Validate configuration for Active Directory
Authentication
setup-ad-keytab Create a keytab for SQL Server to use to authenticate AD
users
optional arguments:
-h, --help show this help message and exit
-n, --noprompt Does not prompt the user and uses environment variables
or defaults.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]