{ "info": { "author": "Bryan Thornbury", "author_email": "bryan@coherenceapi.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Build Tools", "Topic :: Utilities" ], "description": "# docker-push-ssh\n[![PyPI version](https://badge.fury.io/py/docker-push-ssh.svg)](https://pypi.org/project/docker-push-ssh)\n[![Build Status](https://travis-ci.org/CoherenceApi/docker-push-ssh.svg?branch=master)](https://travis-ci.org/CoherenceApi/docker-push-ssh)\n\nPush docker images from your local machine to remote servers without the hassle.\n\n## Overview\n`docker-push-ssh` is a command line utility to push docker images from your local machine to your remote machine via ssh.\n\nIt creates a private docker registry on your server, establishes a ssh tunnel (so the registry is never exposed to the public),\nand uploads your docker image over this ssh tunnel.\n\nTested on OS X with \"Docker for Mac\".\n\n## Install\n\n1. Install via pip:\n`pip install docker-push-ssh`\n\n2. Add `localhost:5000` to your docker client's insecure registries (requires restart of docker):\n\n[[OS X] How to Add Insecure Registry](https://stackoverflow.com/questions/32808215/where-to-set-the-insecure-registry-flag-on-mac-os)\n\n[[Linux] How to Add Insecure Registry](https://stackoverflow.com/questions/42211380/add-insecure-registry-to-docker)\n\n\nAdding `localhost:5000` to your client's insecure registries is inconvenient but a side-effect of docker's design.\nIt only needs to be done once from each machine using `docker-push-ssh`. This allows the tool to push through the ssh\ntunnel at `localhost:5000` to the temporary registry on your remote host, without needing ssl certificates for your server.\n\n## Usage:\n\n```bash\n$ docker-push-ssh --help\nusage: docker-push-ssh [-h] [-i SSH_IDENTITY_FILE] [-p SSH_PORT]\n ssh_host docker_image [docker_image ...]\n\nA utility to securely push a docker image from your local host to a remote\nhost over ssh without using docker save/load or needing to setup a private\nregistry.\n\npositional arguments:\n ssh_host Host to push docker image to. (ex.\n username@myhost.com)\n docker_image Docker image tag(s) to push. Specify one or more\n separated by spaces.\n\noptional arguments:\n -h, --help show this help message and exit\n -i SSH_IDENTITY_FILE, --ssh-identity-file SSH_IDENTITY_FILE\n [required] Path to the ssh identity file on your local\n host. Required, password auth not supported.\n -p SSH_PORT, --ssh-port SSH_PORT\n [optional] Port on ssh host to connect to. (Default is\n 22)\n```\n\n## Examples\n\nFirst create a test image we can use:\n```bash\n$ mkdir /tmp/testimage && cd /tmp/testimage\n$ echo \"FROM alpine\" >> ./Dockerfile\n$ echo \"RUN touch /etc/testimage\" >> ./Dockerfile\n$ docker build -t testimage .\n```\n\nNow push that test image to our remote server:\n```bash\n$ docker-push-ssh -i ~/my_identity_file root@myserver.com testimage\n...\n```\n\nNow the `testimage` will be present on your server.\n\n## Caveats\n\n1. SSH password authentication is not supported. Only key files.\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/coherenceapi/docker-push-ssh", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "docker-push-ssh", "package_url": "https://pypi.org/project/docker-push-ssh/", "platform": "", "project_url": "https://pypi.org/project/docker-push-ssh/", "project_urls": { "Homepage": "https://github.com/coherenceapi/docker-push-ssh" }, "release_url": "https://pypi.org/project/docker-push-ssh/0.1.5/", "requires_dist": null, "requires_python": "", "summary": "Push local docker images to your remote servers via ssh without the hassle.", "version": "0.1.5" }, "last_serial": 4270517, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "2c5252a463254dde5c263426b39821ad", "sha256": "2b7345af771812604111c8278b981e435f73d321e4ee9e4f8556e51499fde299" }, "downloads": -1, "filename": "docker_push_ssh-0.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "2c5252a463254dde5c263426b39821ad", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 5718, "upload_time": "2018-09-12T04:41:49", "url": "https://files.pythonhosted.org/packages/e9/1a/c0c11de6d378d78d4df13784465980ea87d4d6df7505bcf110e380896c83/docker_push_ssh-0.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "549c25d55d66eb3f58a592c010a13058", "sha256": "ecf89089dfa5af0a25cae0017858da1c17a1ab2954c1f7f3696e5656d10eda88" }, "downloads": -1, "filename": "docker-push-ssh-0.1.0.tar.gz", "has_sig": false, "md5_digest": "549c25d55d66eb3f58a592c010a13058", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4150, "upload_time": "2018-09-12T04:33:34", "url": "https://files.pythonhosted.org/packages/2d/40/533a229f03eecf0aab69f0c9a5d41d082fbe8441a50ec3ffc5f9725b8e7c/docker-push-ssh-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "9b156d03213118e9b7a1b3eb37603eee", "sha256": "fd3d22cca7eb96f989f5524ce440cbb3f0d455b0b2a60974224ad465d932f2fc" }, "downloads": -1, "filename": "docker_push_ssh-0.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "9b156d03213118e9b7a1b3eb37603eee", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 5716, "upload_time": "2018-09-12T04:46:52", "url": "https://files.pythonhosted.org/packages/aa/70/d9a0753a105a87db788d998681ae12f4728e05654fe1db39a35e2554fb44/docker_push_ssh-0.1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f974a45dd81aa7c286825aaffdb00488", "sha256": "2733a1c7c2f9869c68d1ba34da6870166348caef6c9e916066e96e2169f8d226" }, "downloads": -1, "filename": "docker-push-ssh-0.1.1.tar.gz", "has_sig": false, "md5_digest": "f974a45dd81aa7c286825aaffdb00488", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4402, "upload_time": "2018-09-12T04:46:54", "url": "https://files.pythonhosted.org/packages/f6/e3/1234d5fa5d7587ccbaf42eaf52d6065d82598a2a5570857b5d994f5ba9eb/docker-push-ssh-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "2439906109604af0ff88fb00cdcd3750", "sha256": "14fa1b1ac1bceacb9d4a08a9a296675ed066a8ff5f8a10a1f97a79955cc9dd1a" }, "downloads": -1, "filename": "docker_push_ssh-0.1.2-py2-none-any.whl", "has_sig": false, "md5_digest": "2439906109604af0ff88fb00cdcd3750", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 8742, "upload_time": "2018-09-12T04:49:50", "url": "https://files.pythonhosted.org/packages/65/5a/439971b7bc3c2c4ac849f3c4cc5c61ec5585b8abfc08ff5767b7506da756/docker_push_ssh-0.1.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "49ff0d5fb652f9aae8b02e31b7eade8a", "sha256": "768e46f4f9d7f04be80be214055ee8882662531797d5589c6fa8e66bfa72b75e" }, "downloads": -1, "filename": "docker-push-ssh-0.1.2.tar.gz", "has_sig": false, "md5_digest": "49ff0d5fb652f9aae8b02e31b7eade8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4281, "upload_time": "2018-09-12T04:49:31", "url": "https://files.pythonhosted.org/packages/3f/18/346409576528ba56a601745a8c6d0566010e5de0e9e8bcf63c33ea04b40d/docker-push-ssh-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "bf495e694defb81e232471a4a6170297", "sha256": "625c6cdc8683436d041e5d9f9d8667459272bc4d36a2342e35e1448f2c863bc9" }, "downloads": -1, "filename": "docker_push_ssh-0.1.3-py2-none-any.whl", "has_sig": false, "md5_digest": "bf495e694defb81e232471a4a6170297", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 8743, "upload_time": "2018-09-12T04:49:57", "url": "https://files.pythonhosted.org/packages/e4/cb/336f4f826f117036c0ffdd118247eb3295971b018eaa9a0e2c73cf435383/docker_push_ssh-0.1.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f6d137d8f9543fbd84071e00558bd83", "sha256": "472b8f2328432d87ecfa4335e7ac26103eef6bcf1d6946638f1b3462a38104d9" }, "downloads": -1, "filename": "docker-push-ssh-0.1.3.tar.gz", "has_sig": false, "md5_digest": "9f6d137d8f9543fbd84071e00558bd83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4402, "upload_time": "2018-09-12T04:49:59", "url": "https://files.pythonhosted.org/packages/64/4a/5b0062aa6f6a15a0743dbd6f7794939672912a481617c7280ded5845f5d6/docker-push-ssh-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "c93c0928f3c0720f1be4de9c98e23440", "sha256": "3acf19ac0a8dd3ad4e9c36b8118d0b9f42c858c4d84b9c09ac8d4e23d0387c41" }, "downloads": -1, "filename": "docker_push_ssh-0.1.4-py2-none-any.whl", "has_sig": false, "md5_digest": "c93c0928f3c0720f1be4de9c98e23440", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9035, "upload_time": "2018-09-12T07:10:01", "url": "https://files.pythonhosted.org/packages/73/58/801a5a85626c5129a92ac667c7b566a7e67d730c2c3b25dabfa361f82a7f/docker_push_ssh-0.1.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "903e7463d4c27bfa4f99f104251d9712", "sha256": "b2807b59977095e8928ba7085819927657100603329dcbbe5c56c992d2cb03f7" }, "downloads": -1, "filename": "docker-push-ssh-0.1.4.tar.gz", "has_sig": false, "md5_digest": "903e7463d4c27bfa4f99f104251d9712", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4670, "upload_time": "2018-09-12T07:10:02", "url": "https://files.pythonhosted.org/packages/8b/5d/0377659ed83916ee2ed1e1fbfbd777c6371b38785d98634ab43f3afa48f9/docker-push-ssh-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "91453869025ac176937e9cfa1a8e25ec", "sha256": "343291ebea7830eb5b6acdba60ea86e651f33fde8b269d78204b2f2853ffe79e" }, "downloads": -1, "filename": "docker_push_ssh-0.1.5-py2-none-any.whl", "has_sig": false, "md5_digest": "91453869025ac176937e9cfa1a8e25ec", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9509, "upload_time": "2018-09-13T23:41:01", "url": "https://files.pythonhosted.org/packages/a8/5e/8e2b8b5ce42fd078ceff84c92fa9f229a4dad1dd205a49c5fedb62b9879f/docker_push_ssh-0.1.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "31f95d5a718f93544c80b433df543e78", "sha256": "47363fe46dd85cfee23dc5406a381172122a63aac074bb5d746efcec92caf313" }, "downloads": -1, "filename": "docker-push-ssh-0.1.5.tar.gz", "has_sig": false, "md5_digest": "31f95d5a718f93544c80b433df543e78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5099, "upload_time": "2018-09-13T23:41:02", "url": "https://files.pythonhosted.org/packages/7a/d6/4069fa8040bdc4353b26994612b3dfdca0525d170fd7621faa4747c4b603/docker-push-ssh-0.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "91453869025ac176937e9cfa1a8e25ec", "sha256": "343291ebea7830eb5b6acdba60ea86e651f33fde8b269d78204b2f2853ffe79e" }, "downloads": -1, "filename": "docker_push_ssh-0.1.5-py2-none-any.whl", "has_sig": false, "md5_digest": "91453869025ac176937e9cfa1a8e25ec", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9509, "upload_time": "2018-09-13T23:41:01", "url": "https://files.pythonhosted.org/packages/a8/5e/8e2b8b5ce42fd078ceff84c92fa9f229a4dad1dd205a49c5fedb62b9879f/docker_push_ssh-0.1.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "31f95d5a718f93544c80b433df543e78", "sha256": "47363fe46dd85cfee23dc5406a381172122a63aac074bb5d746efcec92caf313" }, "downloads": -1, "filename": "docker-push-ssh-0.1.5.tar.gz", "has_sig": false, "md5_digest": "31f95d5a718f93544c80b433df543e78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5099, "upload_time": "2018-09-13T23:41:02", "url": "https://files.pythonhosted.org/packages/7a/d6/4069fa8040bdc4353b26994612b3dfdca0525d170fd7621faa4747c4b603/docker-push-ssh-0.1.5.tar.gz" } ] }