(Première moitié) Approvisionnement EC2 avec Vagrant (Deuxième moitié) Démarrez Jupyter (IPython Notebook) à l'aide de Docker
J'écrirai à Qiita pour la première fois. Pendant les vacances du Nouvel An, j'ai essayé Deep learning from scratch et j'espère étudier TensorFlow et étudier la construction de l'environnement ... , C'est une introduction qui sert également de mémorandum. Étant donné que la première et la seconde moitié de ce temps sont indépendantes, je pense qu'il est possible de se référer à un seul d'entre eux.
:)
:(
Comme prémisse
Est requis.
Je pense que ce sera utile.
Reportez-vous à la page GitHub de HashiCorp: Vagrant AWS Provider pour configurer les paramètres.
Tout d'abord, installez le plug-in pour utiliser AWS.
$ vagrant plugin install vagrant-aws
C'est une BOX équivalente à une image de machine, mais comme une boîte factice est ouverte au public pour EC2, nous allons l'utiliser. (Officiellement, le nom de la boîte est factice, mais il est un peu vague, alors je l'ai changé en ec2.)
$ vagrant box add ec2 https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
Ensuite, accédez au répertoire de travail et créez un Vagrantfile.
$ mkdir jupyter_ec2
$ cd jupyter_ec2
$ vim Vagrantfile
Modifiez le fichier Vagrant et définissez divers paramètres. Cette fois, le démarrage avec le VPC créé à l'avance est spécifié.
Il semble y avoir pas mal d'autres paramètres, et si vous souhaitez les spécifier, vous pouvez utiliser READ ME ou AWS API Document. Je pense qu'il vaut mieux s'y référer).
Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "ec2" # dummy box name
config.vm.provider :aws do |aws, override|
#Informations d'identification AWS
aws.aws_dir = ENV['HOME'] + "/.aws/"
aws.aws_profile = "YOUR_PROFILE"
aws.keypair_name = "YOUR_AWS_ACCESS_KEY"
#Identifiant SSH
override.ssh.username = "ec2-user"
override.ssh.private_key_path = "SSH_KEY_PATH"
#Paramètres VPC
aws.region = 'ap-northeast-1'
aws.availability_zone = 'ap-northeast-1a'
aws.subnet_id = 'subnet-XXXXXXXX'
aws.security_groups = 'sg-XXXXXXXX'
#Paramètres EC2
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' }
#Paramètres EBS
aws.block_device_mapping = [
{
'DeviceName' => "/dev/xvda",
'Ebs.VolumeSize' => 50,
'Ebs.DeleteOnTermination' => true,
'Ebs.VolumeType' => 'standard',
}
]
end
end
Après l'édition, démarrez EC2.
$ vagrant up --provider=aws
Quand ça ne marche pas,
$ export VAGRANT_LOG=DEBUG
Après cela, réexécutez vagrant up
et il affichera un message d'erreur détaillé.
Si vous souhaitez annuler le message d'erreur ʻexport VAGRANT_LOG = WARN `
Assurez-vous que le groupe de sécurité SSH est également ouvert correctement. Si la limite supérieure n'est pas relâchée, la limite supérieure du nombre d'EIP a tendance à être capturée.
Quand il a fini de démarrer
$ vagrant ssh
Vérifiez si vous pouvez vous connecter en SSH avec.
$ vagrant halt
Vous pouvez arrêter l'instance avec, donc lorsque vous ne travaillez pas, arrêtez-la si nécessaire pour économiser de l'argent.
Tout d'abord, installez Docker sur EC2 en vous référant à Installation de Docker.
$ sudo yum update -y
$ sudo yum install -y docker
Démarrez le démon docker pour qu'il démarre automatiquement même après le redémarrage de l'instance.
$ sudo service docker start
$ sudo chkconfig docker on
Ajoutez ec2-user au groupe docker afin de pouvoir ajouter des commandes docker sans privilèges sudo.
$ sudo usermod -a -G docker ec2-user
Une fois que vous quittez et vous reconnectez, docker démarrera sans sudo.
Ensuite, décrivez le Dockerfile.
$ vim Dockerfile
Cette fois, dans un souci de simplicité, nous installerons TensorFlow basé sur l'image d'anaconda.
Dans CMD, spécifiez que jupyter doit être démarré à docker run
.
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"]
Après la modification, créez une image de conteneur à partir du Dockerfile.
$ docker build -t myjupyter .
Enfin, démarrez le conteneur. Spécifiez le volume et montez-le de manière à ce que le notebook puisse être rendu persistant et visible du côté hôte. De plus, l'option --restart oblige le démon docker à démarrer automatiquement le conteneur même après l'arrêt / le démarrage de l'instance.
$ mkdir notebooks
$ docker run -p 8888:8888 -v /home/ec2-user/notebooks:/opt/notebooks --restart=always myjupyter
Après avoir autorisé la communication sur le port TCP 8888 dans le groupe de sécurité, accédez à «[Elastic IP]: 8888» avec un navigateur pour confirmer que Jupyter a démarré.
Seulement lorsque vous étudiez avec cela, apprenez sur le navigateur avec vagrant up
, arrêtez de charger avec vagrant halt
lorsque vous quittez, construisez à partir du même Dockerfile lorsque vous voulez essayer localement, portage facile si ipythonnb est pris via Vagrant C'est devenu un environnement ...! Cela devrait être le cas, je vais donc le corriger le cas échéant en étudiant des livres.
Recommended Posts