Erstellen wir ein Docker-Image mit Fabric. Da Fabric nur über SSH betrieben werden kann, muss Docker über SSH betrieben werden.
Definieren Sie zunächst eine Funktion "Docker", die die folgende Verarbeitung ausführt.
Docker
), die vor dem Starten der Aufgabe ausgeführt werden soll, und führen Sie sshd im Docker-Container aus.import atexit
import time
from fabric.api import *
from fabric.contrib.console import confirm
@task
def docker():
env.hosts = ['127.0.0.1:2222']
env.user = 'root'
env.password = 'PASSWORD'
import docker
cl = docker.Client()
container = cl.create_container('BASE_IMAGE_NAME',
command='/usr/sbin/sshd -D',
ports=[22])
cl.start(container, port_bindings={22:2222})
time.sleep(3)
@atexit.register
def commit():
cl.stop(container)
if confirm('Commit container changes?', default=True):
cl.commit(container['Id'], repository='IMAGE_NAME', tag='TAG')
Indem Sie Folgendes in "fabfile.py" schreiben,
$ fab docker TASK_NAME
Es wird möglich sein, wie auszuführen.
Wenn Sie in der obigen Festschreibungsfunktion "Docker Push" usw. automatisieren und ausführen, können Sie auch alles von der Aufgabenausführung bis zum Hochladen des Docker-Index automatisieren.
Außerdem ist für die Ausführung docker-py erforderlich.
Recommended Posts