[ 
https://issues.apache.org/jira/browse/YARN-6726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16082179#comment-16082179
 ] 

Shane Kumpf commented on YARN-6726:
-----------------------------------

I've uploaded a patch to address the items above and a few more. The summary of 
changes and why they are needed is as follows.

# {{docker stop, rm, kill}} - The final argument is the container name. 
Wrapping the container name in single quotes results in Docker being unable to 
find the image. i.e. {{container_xyz}} becomes {{'container_xyz'}} at 
invocation time.
# {{docker inspect}} - The --format option is used to obtain the container PID, 
hostname, and IP address. Attempting to quote the inspect option does not work. 
The quotes then become part of the output. i.e. 
{{'"'"'127.0.0.1,localhost.localdomain'"'"'}} would be returned if the --format 
option is quoted. I've skipped quoting for this option. No user input is used, 
so this should be safe.
# LOGFILE flush - The LOGFILE flush containing the command to be run is a 
problem. When PrivilegedOperationExecutor is asked to return the operations 
output, this log entry becomes part of the output, breaking commands such as 
{{docker inspect}}. Removed the flush.
# {{docker pull}} - Requires special handling. The only argument here is the 
image name, which is user supplied. Quoting the image name results in the same 
issues seen for container names in the {{docker stop, rm, kill}} case. To 
address this, if the subcommand is {{pull}} it is expected that the next 
element in the array is the image name. The image name is then validated 
against the same regex used in the runtime within Java. This does add a 
dependency on the regex library, which has portability issues. I'm curious how 
we can address the portability issue? Skipping validation on specific platforms 
seems inappropriate. I'm not sure only doing the validation on the java side is 
enough, so skipping validation entirely also seems inappropriate. Open to 
suggestions here.
# {{docker -- config=/path/to/conf/dir}} - Using a Docker client config 
requires the {{--config}} option to come before any sub commands. If the first 
element in the array is this option, pop it off the front of the array, add it 
to the output, and shift the array down. The current approach being considered 
is that the Docker client config will be localized with the application, and 
thus will already be checked to ensure it is a file. No user input will be 
allowed, only shipping the config.json to be localized.

> Fix issues with docker commands executed by container-executor
> --------------------------------------------------------------
>
>                 Key: YARN-6726
>                 URL: https://issues.apache.org/jira/browse/YARN-6726
>             Project: Hadoop YARN
>          Issue Type: Bug
>          Components: nodemanager
>            Reporter: Shane Kumpf
>            Assignee: Shane Kumpf
>         Attachments: YARN-6726.001.patch
>
>
> docker inspect, rm, stop, etc are issued through container-executor. Commands 
> other than docker run are not functioning properly.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to