Konfigurationsskript für die Verwendung von Docker in einer Proxy-Umgebung unter Ubuntu 20.04.1

Konfigurationsskript für die Verwendung von Docker in einer Proxy-Umgebung unter Ubuntu 20.04.1

Ich habe ein Skript erstellt, um Docker in Proxy-Umgebung unter Ubuntu 20.04.1 verwenden sofort festzulegen.

Wie benutzt man

  1. Speichern Sie es als docker-proxy.py.
  2. Geben Sie die Ausführungsberechtigung mit chmod + x docker-proxy.py.
  3. Führen Sie es als "sudo docker-proxy.py proxy-url" aus.

Geben Sie hier für die Proxy-URL eine Zeichenfolge an, z. B. "http: //192.168.11.61: 3128".

Skriptkörper

#!/usr/bin/python3

import string
import subprocess
import os
import sys

###########################################################################
#  template for /etc/apt/apt.conf
###########################################################################
template_apt_conf = """\
Acquire::http::Proxy "$proxy_url";
Acquire::https::Proxy "$proxy_url";
"""


###########################################################################
#  template for /etc/systemd/system/docker.service.d/override.conf
###########################################################################
template_docker_service_override = """\
[Service]
Environment="HTTP_PROXY=$proxy_url"
Environment="HTTPS_PROXY=$proxy_url"
Environment="NO_PROXY=localhost,127.0.0.1"
"""

###########################################################################
#  template for ~/.docker/config.json
###########################################################################
template_config_json = """\
{
  "proxies": {
    "default": {
      "httpProxy": "$proxy_url",
      "httpsProxy": "$proxy_url",
      "noProxy": "localhost,127.0.0.1"
    }
  }
}
"""


###########################################################################
#  write proxy data to a file
###########################################################################
def write_proxy(file_name, input_template, proxy_url):
    context = {
        'proxy_url' : proxy_url
    }
    template = string.Template(input_template)
    data = template.substitute(context)

    with open(file_name, "w") as fout:
        fout.write(data)
    print("wrote: " + file_name)

###########################################################################
#  get the home directory of the original user
###########################################################################
def get_original_home():
    user = os.environ['SUDO_USER']
    if user:
        home_dir = os.path.expanduser('~' + user)
    else:
        home_dir = os.path.expanduser('~')
    return home_dir

###########################################################################
#  write etc/apt/apt.conf
###########################################################################
def write_apt_conf(proxy_url):
    write_proxy('/etc/apt/apt.conf', template_apt_conf, proxy_url)

###########################################################################
#  write /etc/systemd/system/docker.service.d/override.conf
###########################################################################
def write_docker_service_override(proxy_url):
    docker_service_d = '/etc/systemd/system/docker.service.d'
    if not os.path.isdir(docker_service_d):
        os.mkdir(docker_service_d)

    override_conf = os.path.join(docker_service_d, "override.conf")
    write_proxy(override_conf, template_docker_service_override, proxy_url)

###########################################################################
#  write ~/.docker/config.json
###########################################################################
def write_docker_config(proxy_url):
    # get the path of ~/.docker
    home_dir = get_original_home()
    docker_dir = os.path.join(home_dir, ".docker")

    # create ~/.docker
    if not os.path.isdir(docker_dir):
        os.mkdir(docker_dir)

    # get ~/.docker/config.json
    config_json = os.path.join(docker_dir, "config.json")
    write_proxy(config_json, template_config_json, proxy_url)

###########################################################################
#  usage
###########################################################################
def usage():
    print("usage: sudo docker-proxy.py proxy-url")
    print("example: sudo docker-proxy.py http://192.168.11.61:3128")
    
def exec(command):
    subprocess.call(command.split(), shell=False)
    print("ran: " + command)

if __name__ == '__main__':
    if len(sys.argv) != 2 or os.getuid() != 0:
        usage()
        sys.exit(1)

    proxy_url = sys.argv[1]

    exec('apt install -y docker.io docker-compose')

    write_apt_conf(proxy_url)
    write_docker_service_override(proxy_url)
    write_docker_config(proxy_url)

    exec('systemctl daemon-reload')
    exec('systemctl restart docker')

https://gist.github.com/m-tmatma/4f5d3e8233c1040fa453d5857326fd4c

Inhalte verarbeiten

Installieren Sie Docker.

apt install -y docker.io docker-compose

Schreiben Sie die Proxy-Einstellungen in die folgende Datei. (Erstellen Sie ggf. einen Ordner.)

Führen Sie den folgenden Befehl aus, um die Konfigurationsdatei des Docker-Dämons wiederzugeben.

Recommended Posts

Konfigurationsskript für die Verwendung von Docker in einer Proxy-Umgebung unter Ubuntu 20.04.1
Verwenden Sie Docker in einer Proxy-Umgebung unter Ubuntu 20.04.1
Installieren Sie Ubuntu 20.04 in der virtuellen Box unter Windows 10 und erstellen Sie eine Entwicklungsumgebung mit Docker
Verwenden Sie MailHog zum Überprüfen von E-Mails in der Entwicklungsumgebung (mit Docker).
Versuchen Sie, Docker in Ubuntu auf WSL zu setzen
Hinweis: Die Einstellungen für nginx.conf für CORS in der Umgebung von Exment on Lightsail + Docker (nginx)
Installieren Sie einfach Laravel 8 auf dem Docker in der PHP8-Umgebung
Befehlsnotiz zum Installieren von xeyes in der Ubuntu-Docker-Umgebung
Installieren Sie Docker unter Ubuntu Server 20.04
Oracle Java 8 unter Docker Ubuntu
Installieren von MAV Proxy unter Ubuntu 18.04
Installieren Sie Docker und Docker-Compose in kürzester Zeit auf Ubuntu
Erstellen Sie eine Browsertestumgebung mit Capybara in der Docker-Entwicklungsumgebung
Installieren Sie Docker unter Ubuntu und richten Sie die Remoteverbindung mit tls ein
Umgebungsbau mit Docker für Anfänger
Probieren Sie Redmine auf dem Mac Docker aus
Erstellen Sie eine XAMPP-Umgebung unter Ubuntu
Konstruktionsverfahren für Rails on Docker-Umgebungen
Verwenden von Docker mit Windows10 Home WSL2
Erstellen Sie ffmpeg 4.3.1 unter Ubuntu für Windows
Erstellen Sie eine Unity-Entwicklungsumgebung auf Docker
Erstellen Sie eine Debug-Umgebung auf einem Container. Erstellen Sie mit Docker eine lokale Entwicklungsumgebung für Rails-Tutorials.
Lassen Sie uns Docker unter Windows 10 installieren und eine Überprüfungsumgebung für CentOS 8 erstellen!
Führen Sie Redmine in der lokalen Umgebung von Windows 10 Pro-Use Docker Desktop für Windows aus
Setzen Sie Zabbix mit Docker in Ubuntu ein und überwachen Sie Docker auf demselben Host
Erstellen Sie mit Docker schnell eine Webumgebung
Installieren Sie Vivado in der WSL2 + Ubuntu 20.04 LTS-Umgebung
[Docker] Verwenden Sie Umgebungsvariablen in Nginx conf
Führen Sie NordVPN im Docker (Windows) Ubuntu-Container aus
Unterstützung für GDB-Fehler in Docker-Containern
Schaben mit Puppenspieler in Nuxt auf Docker.
Bearbeiten Sie MySQL mit Befehlen in der Docker-Umgebung
Proxyserver durch Tintenfisch mit Docker-Image
[Ruby] Erstellen einer Ruby-Entwicklungsumgebung unter Ubuntu
Erstellen Sie mit Docker einen Authentifizierungs-Proxyserver
Stapelimplementierung in der RubyOnRails-Umgebung mit Digdag
Erstellen Sie eine Redmine-Code-Leseumgebung in Docker
Aktualisieren der Java-Umgebung von Windows mit Chocolatey