Start tor and polipo when I launch my container

I wrote my first Dockerfile in order to test Docker with tor and polipo.
My Dockerfile looks like:

# Pull base image.
FROM ubuntu:latest

# Upgrade system
RUN apt-get update && apt-get dist-upgrade -y --no-install-recommends && apt-get autoremove -y && apt-get clean

# Install TOR
RUN apt-get install -y --no-install-recommends tor tor-geoipdb torsocks && apt-get autoremove -y && apt-get clean

# INSTALL POLIPO
RUN apt-get update && apt-get install -y polipo


# Default ORPort
EXPOSE 9001

# Default DirPort 
EXPOSE 9030

# Default SOCKS5 proxy port 
EXPOSE 9050

# Default ControlPort
EXPOSE 9051
# Default polipo Port
EXPOSE 8123

RUN echo 'socksParentProxy = "localhost:9050"'  >> /etc/polipo/config
RUN echo 'socksProxyType = socks5'  >> /etc/polipo/config
RUN echo 'diskCacheRoot = ""' >> /etc/polipo/config

RUN echo 'ORPort 9001' >> /etc/tor/torrc
RUN echo 'ExitPolicy reject *:*' >> /etc/tor/torrc

RUN mkdir scrapy
ADD scrapyTor scrapy

ADD startpolipotor.sh .
RUN chmod 775 ./startpolipotor.sh

my startpolipotor.sh contains 3 lines:

  • How can I submit a Spark job to YARN cluster with Docker Container Executor as YARN container?
  • Run DDL-script generated by Entity Framework does not create tables in Docker container
  • Rails console into Docker on Heroku
  • Docker: correct way of persisting container data to host
  • How to run JIRA and MySQL on same Docker Container
  • Pushing a Docker image with gcloud failed
  • #!/bin/bash                                                              
    /etc/init.d/tor start &
    /etct/init.d/polipo start &
    

    But when I launch this command:

    docker run -i -t id_image /bin/bash
    

    And once inside in the container when I launch ps, I see nothing.
    How I can resolve this?

  • Subscribing to Consul Key-Value
  • How to set the remote API version for docker client?
  • Running node and nginx in docker with supervisor
  • Creating docker named volume pointing to folder on host
  • Docker swarm constraint wildcards
  • How to config docker registry mirror?
  • One Solution collect form web for “Start tor and polipo when I launch my container”

    Your Dockerfile should have a command defined like:

    CMD ./startpolipotor.sh
    

    Then you do not need to provide /bin/bash as a run command. Only the following should be enough:

    docker run -i -t id_image
    

    By the way: your script file creates two processes running in background. That will not work!

    Docker containers need to have always a process in foreground. In your case the container would stop immediately after executing your start script. And while stopping the SIGTERM will not properly be sent to those background processes so they will simply get killed and may leave some corrupt data.

    You should think about using supervisord instead when you need to have multiple processes in your container started.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.