如何在 Docker 容器内运行程序?

Ric*_*ell 4 docker

我正在使用这个 Docker 容器运行一个名为ERDDAP的应用程序:

docker stop erddap
docker rm erddap
docker run -p 8090:8080 -p 8543:8443 -d -v /usr/local/erddap/tomcat-users.xml:/opt/tomcat/conf/tomcat-users.xml -v /usr/local/erddap:/opt/tomcat/content/erddap -v /usr/local/erddapData:/erddapData --name erddap axiom/docker-erddap
Run Code Online (Sandbox Code Playgroud)

此应用程序读取datasets.xml应该由GenerateDatasetsXml容器内调用的应用程序生成的文件:http : //coastwatch.pfeg.noaa.gov/erddap/download/setupDatasetsXml.html#GenerateDatasetsXml

那么如何运行 Docker 容器内的这个程序来生成我的datasets.xml文件呢?

jsi*_*ell 5

要在 docker 容器中执行 shell 命令,请运行:

$ docker exec -it erddap bash
Run Code Online (Sandbox Code Playgroud)

这将带您进入位于 /opt/tomcat 的 docker 容器。您的命令提示符将如下所示

root@d2adcc7db35a:/opt/tomcat# 
Run Code Online (Sandbox Code Playgroud)

首先验证您的 erddapData 文件夹位于 /erddapData,然后运行:

cd /opt/tomcat/webapps/erddap/WEB-INF/
bash GenerateDatasetsXml.sh 
Run Code Online (Sandbox Code Playgroud)

这将启动 GenerateDatasetsXml 脚本。回答完所有问题后,您可以使用以下命令离开容器:

exit
Run Code Online (Sandbox Code Playgroud)

此脚本的输出位于您本地的 erddapData 目录中:

$ cd /usr/local/erddapData/logs/
$ cat GenerateDatasetsXml.out
Run Code Online (Sandbox Code Playgroud)

您可以将输出复制到您的 datasets.xml 文档中您需要它的位置,您应该将其保存在 /usr/local/erddap/