[PYTHON] Erstellen Sie mit boot2docker eine Ausführungsumgebung für jede Sprache

In letzter Zeit ist es üblicher geworden, je nach Zweck wie go, python oder node in verschiedenen Sprachen zu entwickeln. Daher habe ich beschlossen, eine Ausführungsumgebung auf der VM zu erstellen.

Erstellen Sie boot2docker (Core Linux) in VirtualBox und erstellen Sie die folgende Ausführungsumgebung ・ Geh lang · Weil. js (py)

[Vorbereitete Umgebung] ・ VirtualBox ・ Vagrant v1.7.1

Ich habe auch VMware Fusion, also wollte ich das auch überprüfen. Eine Lizenz ist erforderlich, diesmal ist es also ein Pass. Referenz: https://www.vagrantup.com/vmware $ 79 (,3 9.384 Yen) Ein wenig teuer ...

Installieren Sie Vagrant

Laden Sie dmg von der offiziellen Website herunter und installieren Sie es.

VirtualBox installieren

Laden Sie dmg für OS X von der offiziellen Website herunter und installieren Sie es.

Boot2docker vorbereiten

$ mkdir -p /Users/<USER NAME>/Documents/Vagrant/boot2docker
$ cd /Users/<USER NAME>/Documents/Vagrant/boot2docker

#boot2 docker boot
$ vagrant init mitchellh/boot2docker

Beim Erstellen eines ISO-Images von boot2docker

(Wenn Sie kein ISO benötigen, gehen Sie zum Booten.)

Installieren Sie Packer von hier

Führen Sie nach der Installation Folgendes vom Terminal aus


$ cd /Users/<USER NAME>/Documents/Vagrant
$ git clone https://github.com/mitchellh/boot2docker-vagrant-box.git
$ cd boot2docker-vagrant-box.git
$ vagrant up
$ vagrant ssh -c 'cd /vagrant && sudo ./build-iso.sh'
$ vagrant destroy --force
$ packer build -only=virtualbox-iso template.json

Wenn Sie das oben genannte tun ・ B2d.iso ・boot2docker_virtualbox.box ・ Boot2docker_virtualbox.iso wird erstellt.


boot2 docker boot

Stellen Sie den Port vorwärts


$vi Vagrantfile

: Weggelassen
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# config.vm.network "forwarded_port", guest: 80, host: 8080

# Add port forwarding
config.vm.network "forwarded_port", guest: 80, host: 8080

# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
: Weggelassen

boot2 docker

$ vagrant up
$ vagrant ssh

スクリーンショット 2014-12-13 22.11.15.png

boot2docker Datenpersistenz

Behalten Sie als Nächstes die von boot2docker erstellten Daten bei.

Führen Sie den folgenden Befehl auf boot2docker aus

$ sudo su -
# cat > /var/lib/boot2docker/bootlocal.sh <<EOF
> echo "tar cf /var/lib/boot2docker/userdata.tar . -C /home/docker/" >> /opt/shutdown.sh
> EOF
# chmod +x /var/lib/boot2docker/bootlocal.sh
# sudo reboot

【Bestätigung】 SSH von Mac

$ vagrant ssh
# pssword : tcuser
#Arbeiten mit boot2docker
$ touch test
$ ls -l 
  -rw-r--r--    1 docker   staff            0 Dec 13 13:22 test
$ sudo reboot

Ssh wieder von Mac

$ vagrant ssh
# pssword : tcuser

boot2docker

$ ls -l 
   -rw-r--r--    1 docker   staff            0 Dec 13 13:22 test
#Bestätigen Sie, dass es existiert

Docker-Image erstellen (Golang)

Da es eine große Sache ist, erstellen Sie ein Bild aus der Docker-Datei

go lang

$ mkdir golang
$ cd golang
$ vi Dockerfile

#
# Go Dockerfile
#
# https://github.com/dockerfile/go
#
  
# Pull base image.
FROM dockerfile/ubuntu
  
# Install Go
RUN \
  mkdir -p /goroot && \
  curl https://storage.googleapis.com/golang/go1.3.1.linux-amd64.tar.gz | tar xvzf - -C /goroot --strip-components=1
  
# Set environment variables.
ENV GOROOT /goroot
ENV GOPATH /gopath
ENV PATH $GOROOT/bin:$GOPATH/bin:$PATH
  
# Define working directory.
WORKDIR /gopath
  
# Define default command.
CMD ["bash"]

Docker-Image erstellen

$ docker build -t ubuntu/golang .
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu/golang       latest              ff635337559a        3 minutes ago       614 MB
dockerfile/ubuntu   latest              c8f87bf54eb2        8 days ago          414.6 MB

Versuchen Sie Hello World mit go on docker.


$ docker run -i -p 80:80 -t ubuntu/golang /bin/bash

$ go version
go version go1.3.1 linux/amd64

$ vi testserver.go

package main

import (
  "fmt"
  "net/http"
)

func indexHandler(w http.ResponseWriter, r *http.Request) {
  fmt.Fprintf(w, "Hello Go lang")
}

func main() {
  http.HandleFunc("/", indexHandler)
  http.ListenAndServe(":80", nil)
}


#Da es sich um einen Test handelt, wird er ohne Kompilierung ausgeführt
$ go run testserver.go

Greifen Sie mit einem Browser vom Mac aus zu und überprüfen Sie die Ausführung

スクリーンショット 2014-12-14 0.10.18.png


Docker-Image erstellen (nodejs, python)

Da die Python-Umgebung die Basis von nodejs ist, erstellen Sie nur die Nodejs-Umgebung

$ mkdir ~/nodejs
$ cd ~/nodejs
$ vi Dockerfile


#
# Node.js Dockerfile
#
# https://github.com/dockerfile/nodejs
#

# Pull base image.
FROM dockerfile/python

# Install Node.js
RUN \
  cd /tmp && \
  wget http://nodejs.org/dist/node-latest.tar.gz && \
  tar xvzf node-latest.tar.gz && \
  rm -f node-latest.tar.gz && \
  cd node-v* && \
  ./configure && \
  CXX="g++ -Wno-unused-local-typedefs" make && \
  CXX="g++ -Wno-unused-local-typedefs" make install && \
  cd /tmp && \
  rm -rf /tmp/node-v* && \
  npm install -g npm && \
  echo -e '\n# Node.js\nexport PATH="node_modules/.bin:$PATH"' >> /root/.bashrc

# Define working directory.
WORKDIR /data

# Define default command.
CMD ["bash"]

Docker-Image erstellen


$ docker build -t ubuntu/nodejs .
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu/nodejs       latest              60d7f5969d7a        30 seconds ago      496.6 MB
ubuntu/golang       latest              42a919d3c0ea        23 minutes ago      614 MB
dockerfile/python   latest              f08c82e36872        8 days ago          471 MB
dockerfile/ubuntu   latest              c8f87bf54eb2        8 days ago          414.6 MB

$ docker run -i -p 80:80 -t ubuntu/nodejs /bin/bash

$ npm version
{ http_parser: '1.0',
  node: '0.10.33',
  v8: '3.14.5.9',
  ares: '1.9.0-DEV',
  uv: '0.10.29',
  zlib: '1.2.3',
  modules: '11',
  openssl: '1.0.1j',
  npm: '2.1.12' }

#Server erstellen
$ vi app.js
var http = require('http');

var server = http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World node.js');
});
server.listen(80);

スクリーンショット 2014-12-14 0.27.25.png

Testen Sie Python in derselben Umgebung

# ubuntu/Führen Sie mit nodejs aus

$ python --version
Python 2.7.6

$ vi index.html
<html>
<body>
    Hello Python
</body>
</html>

$ python -m SimpleHTTPServer 80

スクリーンショット 2014-12-14 0.25.21.png


Docker Löschen Sie nicht benötigte Container

Da Docker die Differenzdatei nach dem Start aufbewahrt, löschen Sie sie, wenn sie nicht mehr benötigt wird.

$ docker ps -a
CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS                      PORTS               NAMES
8675a8897319        ubuntu/nodejs:latest   "/bin/bash"         8 seconds ago       Exited (0) 7 seconds ago                        hungry_carson       
f71e1d22b5e6        ubuntu/golang:latest   "/bin/bash"         56 seconds ago      Exited (0) 54 seconds ago                       prickly_shockley    

#Geben Sie die ID des nicht benötigten Containers an
$ docker rm 8675a8897319 f71e1d22b5e6


#Beim Löschen eines Bildes
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu/nodejs       latest              60d7f5969d7a        About an hour ago   496.6 MB
ubuntu/golang       latest              42a919d3c0ea        About an hour ago   614 MB
dockerfile/python   latest              f08c82e36872        8 days ago          471 MB
dockerfile/ubuntu   latest              c8f87bf54eb2        8 days ago          414.6 MB

$ docker rmi < IMAGE ID >

Beim gleichzeitigen Löschen von Containern und Bildern

# remove container
$ docker rm `docker ps -a -q`

# remove images
$ docker rmi $(docker images | awk '/^<none>/ { print $3 }')

Quellcodeverwaltung auf GitHub für standortübergreifende und agile Entwicklung Wenn Sie die Umgebung mit Dockerfile verwalten, können Sie eine für die Mobilität geeignete Entwicklung entwickeln.

Es ist an der Zeit, dass der Mac das Limit erreicht, also möchte ich boot2docker mit Bare Metal bauen.

Recommended Posts

Erstellen Sie mit boot2docker eine Ausführungsumgebung für jede Sprache
Erstellen Sie eine Windows Python-Ausführungsumgebung mit VScode + Remote WSL
Erstellen Sie mit pyenv-virtualenv eine Python-Umgebung für jedes Verzeichnis
Verwenden Sie Python, das von pyenv für die PL / Python-Ausführungsumgebung installiert wurde
Erstellen einer Umgebung für die Verarbeitung natürlicher Sprache mit Python
Erstellen Sie mit AirtestIDE eine Umgebung für die Testautomatisierung (Tipps)
Erstellen Sie eine Umgebung mit virtualenv
Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"
Verhalten in jeder Sprache, wenn Collouts mit for wiederverwendet werden
Umgebungskonstruktion, einfache Bestätigung und Fähigkeitstest für jede Sprache
Erstellen Sie eine virtuelle Umgebung mit Python!
Erstellen Sie eine IPython Notebook-Umgebung mit boot2docker
Wechseln Sie das zu installierende Paket für jede Umgebung mit Gedichten
Erstellen Sie mit Vagrant (Ubuntu 16.04) eine Umgebung für Django x Apache x mod_wsgi.
Erstellen Sie ein USB-Boot-Ubuntu mit einer Python-Umgebung für die Datenanalyse
Erstellen wir eine virtuelle Umgebung für Python
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen Sie mit Docker eine Python + uWSGI + Nginx-Umgebung
Begrenzen Sie ssh mit iptables für jeden Benutzer
Häufig verwendetes Syntaxmemorandum für jede Sprache
Wechseln Sie das zu ladende Modul für jede Ausführungsumgebung in Python
Erstellen Sie eine Entwicklungsumgebung für die C-Sprache mit einem Container
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Bereiten Sie eine Programmiersprachenumgebung für die Datenanalyse vor
Erstellen Sie mit Minette für Python einen LINE BOT
Erstellen einer Anaconda-Umgebung für Python mit pyenv
Erstellen Sie mit Sympy + Jupyter die stärkste Taschenrechnerumgebung
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Verschiedene Befehle zum Erstellen einer Umgebung mit Apache
Erstellen Sie mit Django ein Dashboard für Netzwerkgeräte!
Erstellen Sie mit Docker eine Umgebung aus Nginx + uWSGI + Python (Django)
Bildverarbeitung mit Python Environment Setup für Windows
[Python] Erstellen Sie eine asynchrone Taskausführungsumgebung + Überwachungsumgebung
Befehle zum Erstellen einer Python3-Umgebung mit virtualenv
Rollback DB für jeden Test mit Flask + SQLAlchemy
Versuchen Sie, mit VisualStudioCode eine Umgebung für MayaPython zu erstellen
Erstellen Sie eine Python-Ausführungsumgebung unter IBM i
Erstellen Sie eine Python-Ausführungsumgebung mit VS-Code
Ich habe versucht, mit Open AI Gym eine verbesserte Lernumgebung für Othello zu schaffen
So legen Sie die Entwicklungsumgebung für jedes Projekt mit VSCode + Python-Erweiterung + Miniconda fest
Richten Sie eine Entwicklungsumgebung für die Verarbeitung natürlicher Sprache ein
Extrahieren Sie mit Pandas DataFrame N Proben für jede Gruppe
Python 3.4 Windows7-64bit-Umgebung erstellen (für die Analyse finanzieller Zeitreihen)
Erstellen Sie eine virtuelle Umgebung mit Anaconda, die über Pyenv installiert ist
Erstellen Sie eine Python-Entwicklungsumgebung mit Vagrant + Ansible + Fabric
[Linux] WSL2 Erstellen Sie mit Ubuntu 20.04 eine Umgebung für laravel7
Code-Server-Online-Umgebung (2) Erstellen Sie mit Boto3 ein virtuelles Netzwerk
Erstellen Sie eine Umgebung für MkDocs unter Amazon Linux (versucht)
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Vorbereiten der Ausführungsumgebung von PyTorch mit Docker November 2019
Erstellen Sie eine Open AI Gym-Umgebung mit Bash unter Windows 10