(Erste Hälfte) EC2-Bereitstellung mit Vagrant (Zweite Hälfte) Starten Sie Jupyter (IPython Notebook) mit Docker
Ich werde zum ersten Mal an Qiita schreiben. Während der Neujahrsferien habe ich versucht, von Grund auf neu zu lernen und hoffentlich TensorFlow und den Aufbau von Umgebungen zu studieren ... Es ist eine Einführung, die auch als Memorandum dient. Da die erste und zweite Hälfte dieser Zeit unabhängig voneinander sind, ist es meines Erachtens möglich, nur auf eine davon Bezug zu nehmen.
:)
:(
Als Voraussetzung
Wird benötigt.
Ich denke, das wird hilfreich sein.
Informationen zum Konfigurieren der Einstellungen finden Sie auf der GitHub-Seite von HashiCorp: Vagrant AWS Provider.
Installieren Sie zunächst das Plug-In, um AWS zu verwenden.
$ vagrant plugin install vagrant-aws
Es ist eine BOX, die einem Maschinenabbild entspricht, aber da eine Dummy-Box für EC2 für die Öffentlichkeit zugänglich ist, werden wir diese verwenden. (Offiziell ist der Boxname Dummy, aber er ist etwas vage, deshalb habe ich ihn in ec2 geändert.)
$ vagrant box add ec2 https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
Wechseln Sie als Nächstes in das Arbeitsverzeichnis und erstellen Sie eine Vagrant-Datei.
$ mkdir jupyter_ec2
$ cd jupyter_ec2
$ vim Vagrantfile
Bearbeiten Sie die Vagrant-Datei und stellen Sie verschiedene Parameter ein. Dieses Mal wird der Start mit der zuvor erstellten VPC angegeben.
Es scheint, dass es noch einige andere Parameter gibt. Wenn Sie diese angeben möchten, können Sie README oder AWS API Document verwenden. Ich denke, es ist besser, sich darauf zu beziehen).
Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "ec2" # dummy box name
config.vm.provider :aws do |aws, override|
#AWS-Berechtigungsnachweis
aws.aws_dir = ENV['HOME'] + "/.aws/"
aws.aws_profile = "YOUR_PROFILE"
aws.keypair_name = "YOUR_AWS_ACCESS_KEY"
#SSH-Berechtigungsnachweis
override.ssh.username = "ec2-user"
override.ssh.private_key_path = "SSH_KEY_PATH"
#VPC-Einstellungen
aws.region = 'ap-northeast-1'
aws.availability_zone = 'ap-northeast-1a'
aws.subnet_id = 'subnet-XXXXXXXX'
aws.security_groups = 'sg-XXXXXXXX'
#EC2-Einstellungen
aws.ami = "ami-9f0c67f8" # Amazon Linux 2016.09.01
aws.instance_type = 'm4.large'
aws.elastic_ip = true
aws.associate_public_ip = true
aws.tags = { 'Name' => 'NAME_TAGS_VALUE' }
#EBS-Einstellungen
aws.block_device_mapping = [
{
'DeviceName' => "/dev/xvda",
'Ebs.VolumeSize' => 50,
'Ebs.DeleteOnTermination' => true,
'Ebs.VolumeType' => 'standard',
}
]
end
end
Starten Sie nach der Bearbeitung EC2.
$ vagrant up --provider=aws
Wenn es nicht funktioniert,
$ export VAGRANT_LOG=DEBUG
Führen Sie danach "vagrant up" erneut aus und es wird eine detaillierte Fehlermeldung angezeigt.
Wenn Sie die Fehlermeldung
export VAGRANT_LOG = WARN rückgängig machen möchten
Stellen Sie sicher, dass die Sicherheitsgruppe SSH auch ordnungsgemäß geöffnet ist. Wenn die Obergrenze nicht gelockert wird, wird die Obergrenze der Anzahl der EIPs tendenziell erfasst.
Wenn es fertig ist zu starten
$ vagrant ssh
Überprüfen Sie, ob Sie sich mit SSH anmelden können.
$ vagrant halt
Sie können die Instanz mit stoppen. Wenn Sie also nicht arbeiten, stoppen Sie sie entsprechend, um Geld zu sparen.
Installieren Sie Docker zunächst auf EC2 unter Installieren von Docker.
$ sudo yum update -y
$ sudo yum install -y docker
Starten Sie den Docker-Daemon so, dass er auch nach dem Neustart der Instanz automatisch gestartet wird.
$ sudo service docker start
$ sudo chkconfig docker on
Fügen Sie der Docker-Gruppe ec2-user hinzu, damit Sie Docker-Befehle ohne Sudo-Berechtigungen hinzufügen können.
$ sudo usermod -a -G docker ec2-user
Sobald Sie beenden und sich erneut anmelden, startet Docker ohne Sudo.
Beschreiben Sie als Nächstes die Docker-Datei.
$ vim Dockerfile
Dieses Mal werden wir der Einfachheit halber TensorFlow basierend auf dem Image von Anaconda installieren. Geben Sie in CMD an, dass jupyter beim Docker-Lauf gestartet werden soll.
FROM continuumio/anaconda:latest
RUN mkdir /opt/notebooks
RUN pip install tensorflow
# Another installations comes here.
CMD ["/opt/conda/bin/jupyter", "notebook", "--notebook-dir=/opt/notebooks", "--ip='*'", "--port=8888", "--no-browser"]
Erstellen Sie nach der Bearbeitung ein Containerbild aus der Docker-Datei.
$ docker build -t myjupyter .
Starten Sie zum Schluss den Container. Geben Sie das Volume an und mounten Sie es, damit das Notebook dauerhaft und von der Hostseite aus sichtbar ist. Die Option --restart bewirkt außerdem, dass der Docker-Daemon den Container automatisch startet, selbst nachdem die Instanz gestoppt / gestartet wurde.
$ mkdir notebooks
$ docker run -p 8888:8888 -v /home/ec2-user/notebooks:/opt/notebooks --restart=always myjupyter
Nachdem Sie die Kommunikation mit dem TCP-Port 8888 in der Sicherheitsgruppe zugelassen haben, greifen Sie mit einem Browser auf "[Elastic IP]: 8888" zu, um zu bestätigen, dass Jupyter gestartet wurde.
Nur wenn Sie damit lernen, lernen Sie im Browser mit "vagrant up", beenden Sie das Aufladen mit "vagrant halt" beim Beenden, erstellen Sie aus derselben Docker-Datei, wenn Sie es lokal versuchen möchten, portieren Sie einfach, wenn ipythonnb über Vagrant verwendet wird Es wurde eine Umgebung ...! Es sollte so sein, also werde ich es angemessen korrigieren, während ich Bücher studiere.
Recommended Posts