This question is hella broad.
So the Docker images are portable
. You can start a container, do a bunch of operations like install packages, start services, modify files and then do a:
docker commit <container-id> myname/containername:version
docker push <image-id>
Then the rest of the world can use your container image if it's pushed to DockerHub. That is if your permissions are public. You can also make your image private
so that it can be shared by a select group of people. Another alternative is to setup your own Docker Registry and just push your images to that registry so that it's not widely available to everybody.
If you want to share your data
. I don't recommend using Docker images, it's just not what it's meant to be. Say you are using mysql, you can just do a mysqldump of your database and store it in some service like S3 and then shared it to whoever you want so that they can later import the data into their own containers running mysql.
Hope this helps.