Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将bash命令与Docker重启策略一起使用?_Bash_Docker_Ros_Docker Run - Fatal编程技术网

如何将bash命令与Docker重启策略一起使用?

如何将bash命令与Docker重启策略一起使用?,bash,docker,ros,docker-run,Bash,Docker,Ros,Docker Run,在ROS项目中,我使用以下bash脚本运行docker容器: #!/bin/bash source ~/catkin_ws/devel/setup.bash rosnode kill some_ros_node roslaunch supporting_ros_package launch_file.launch & docker run -it \ --restart=always \ --privileged \ --net=host \ my_i

在ROS项目中,我使用以下bash脚本运行docker容器:

#!/bin/bash

source ~/catkin_ws/devel/setup.bash
rosnode kill some_ros_node
roslaunch supporting_ros_package launch_file.launch &

docker run -it \
    --restart=always \
    --privileged \
    --net=host \
    my_image:latest \
    /bin/bash -c\
    "
     roslaunch my_package my_launch_file.launch
    "
export containerId=$(docker ps -l -q)
但是,我希望发生的是,每当容器重新启动时(特别是机器启动时),在
docker run
命令之前的bash命令也会在主机上重新运行(而不是在容器内)


我如何才能做到这一点?

我可以想出几种方法:

  • 将此脚本添加到系统服务。请参阅有关添加系统服务的回答:
  • 将此脚本添加到另一个也设置为“始终重新启动”的容器中。。。但将docker套接字安装到另一个容器中,如下所示:

  • 主机上需要某种任务管理器,如supervisord或systemd unit文件,用于监视容器(可能有一个非后台
    docker run
    作为其主要命令)。Docker生态系统基本上不直接在主机上运行命令。