Cette fois, pour fournir et utiliser le programme que j'ai créé
--Utilisez docker à chaque fois --Spécifier les arguments sur la ligne de commande de l'exécution du docker
Le programme a été préparé sous la forme de. Écrivez cette note. Cela suit la tendance actuelle et semble être l'usage général utilisé dans l'open source fourni de cette manière.
Avec mon propre programme
$ prog <arg1> <args2>
Je l'ai préparé tel quel dans une image de docker
$ docker run -t prog_image <arg1> <arg2>
Sera disponible en tant que.
J'ai pu faire référence à ce qui suit.
Je pense que les informations ci-dessus sont suffisantes, mais si j'ose donner un point addictif, ...
--Dans ENTRYPOINT au lieu de CMD: j'avais l'habitude de spécifier le contenu de l'exécution dans CMD dans Dockerfile, mais il semble qu'il n'accepte plus les arguments. Cela a fonctionné lorsque je l'ai réglé sur ETNRYPOINT.
--Exécuter l'autorisation: image Lorsque l'autorisation interne semblait poser un problème, j'ai écrit RUN chmod + x
La méthode de mise en œuvre est la construction de docker
--Installez le programme exécutable
prog```
--Préparer un script pour exécuter prog (il semble appeler le script wrapper)
--Définissez le script wrapper sur ENTRYPOINT dans le fichier dockerfile
est. (Je pense que c'est correct de spécifier le programme d'exécution directement, mais y a-t-il quelque chose de mieux pour passer par le shell? Je ne sais pas à ce sujet.)
Je l'ai fait pour le test.
--Programme exécutif. hello.c Un programme qui affiche des arguments de ligne de commande.
hello.c
#include <stdio.h>
#include <stdlib.h>
int main(const int argc, const char**argv)
{
for(int i=0; i< argc; i++){
printf("argv[%d]=%s\n", i, argv[i]);
}
return EXIT_SUCCESS;
}
--wrapper script: il suffit de passer l'argument
docker_entrypoint.sh
#!/bin/bash
echo "I am a wrapper script."
hello $@
FROM ubuntu:18.04
RUN apt-get update -y && \
apt-get install -y -qq --no-install-recommends \
build-essential \
gcc
COPY hello.c /tmp/
RUN cd /tmp && gcc /tmp/hello.c -o hello && mv hello /usr/local/bin/
COPY docker_entrypoint.sh /usr/local/bin
ENTRYPOINT ["docker_entrypoint.sh"]
> docker build -t test .
...
Successfully tagged test:latest
> docker run --rm -t test Dear my friends.
I am wrapper script.
argv[0]=hello
argv[1]=Dear
argv[2]=my
argv[3]=friends.
ENTRYPOINT [ "hello" ]
――Cela fonctionne sans script pour l'essayer.Dans ce cas, cela a fonctionné même si le programme d'exécution a été spécifié directement dans ENTRYPOINT du Dockerfile. Résumé - Pour le moment, j'ai découvert comment transformer un environnement fonctionnant sous Linux en un programme fonctionnant sous docker tel quel.
J'ai pu survivre aujourd'hui (pour être exact, hier). (2020/10/17)