Erstellen Sie einen IBM Container (Docker-Container), der die für die IBM Watson API und Python-basierte Verarbeitung natürlicher japanischer Sprache erforderlichen Tools enthält, und registrieren Sie ihn im IBM Bluemix-Repository, damit er wiederverwendet werden kann. Da es sich natürlich um einen Container für die Entwicklungsumgebung handelt, werden wir Möglichkeiten entwickeln, um den Container kontinuierlich laufen zu lassen.
Erstellen Sie den Docker-Zielcontainer in Ihrer eigenen PC-Umgebung und registrieren Sie ihn im Bluemix-Container-Repository. Da Docker von Ubuntu Linux als zu erstellende Umgebung praktisch ist, erstellen Sie zunächst eine Umgebung, in der Ubuntu Linux mit Vagrant in Ihrer eigenen PC-Umgebung ausgeführt wird. Hier denke ich, dass der folgende Link hilfreich sein wird, um die Umgebung von Vagrant vorzubereiten.
Sobald Sie eine Vagrant-Umgebung haben, starten Sie Ihren gefälschten Ubuntu Linux-Computer und installieren Sie Docker.io.
Installieren Sie dann den Befehl Cloud Foundry cf und den Befehl Bluemix bx und melden Sie sich bei Ihrem Bluemix-Konto an. Natürlich ist ein Bluemix-Konto ein Muss. Die folgenden Links helfen Ihnen, diese Voraussetzungen zu erfüllen.
Als japanisches Verarbeitungswerkzeug ist in Python erstelltes NLTK praktisch, daher erstellen wir einen Container, der das neueste Python ausführen kann. Da das offizielle Image von Docker in der neuesten Umgebung von Python als Vorlage für Dockerfile verwendet wird, klonen Sie die Dockerfile unter Ubuntu von Vagrant mit dem folgenden Befehl. Es gibt alle Vorlagen der Python 2.7-Serie und der 3er-Serie in dieser Vorlage, aber dieses Mal verwende ich Python 2.7.
root@ubuntu-xenial:~/docker# git clone https://github.com/docker-library/python
Wechseln Sie in das Python 2.7-Verzeichnis und bearbeiten Sie die Docker-Datei.
root@ubuntu-xenial:~/docker/python# ls
2.7 3.6 Dockerfile-slim.template README.md
3.3 Dockerfile-alpine.template Dockerfile-windowsservercore.template update.sh
3.4 Dockerfile-debian.template generate-stackbrew-library.sh
3.5 Dockerfile-onbuild.template LICENSE
root@ubuntu-xenial:~/docker/python# cd 2.7
root@ubuntu-xenial:~/docker/python/2.7# ls
alpine Dockerfile onbuild slim wheezy windows
Die zu bearbeitenden Teile sind unten aufgeführt. Fügen Sie sie daher der ursprünglichen Docker-Datei hinzu.
1 FROM buildpack-deps:jessie
2 ADD ./app /app
3
<Ausgelassen>
10
11 # runtime dependencies
12 RUN apt-get update && apt-get -y upgrade && apt-get install -y --no-install-recommends \
13 tcl \
14 tk \
15 mecab \
16 libmecab-dev \
17 mecab-ipadic \
18 mecab-ipadic-utf8 \
19 mecab-utils \
20 emacs-nox \
21 nmon \
22 && rm -rf /var/lib/apt/lists/*
Die Erläuterung der zusätzlichen Teile ist unten aufgeführt.
77 RUN pip install --no-cache-dir mecab-python
78 RUN pip install --no-cache-dir watson-developer-cloud
79 RUN pip install --no-cache-dir BeautifulSoup
80 RUN pip install --no-cache-dir nltk
Ich werde die folgenden Korrekturen auflisten.
80 RUN pip install --no-cache-dir nltk
81
82 CMD ["bash", "/app/loop_wait"]
Führen Sie abschließend den Befehl aus, um sleep in einer Endlosschleife auszuführen, damit der Container nicht endet.
Eine Beschreibung von ADD ./app/app oben. Erstellen Sie das App-Verzeichnis im Ordner 2.7, erstellen Sie die folgenden Dateien und geben Sie dem Ausführungsrecht chmod + x loop_wait.
!/bin/bash
while true; do sleep 60; done
Durch Ausführen dieser Datei von der CMD in der letzten Zeile 82 der Docker-Datei wird der Container weiter ausgeführt.
Bauen Sie den Behälter in Ihrer Umgebung. Führen Sie den folgenden Befehl am Speicherort der Dockerfile-Datei und im App-Verzeichnis aus. Installieren Sie die erforderlichen Pakete im Container, sammeln Sie die Dateien, kompilieren Sie Python 2.7.13 und erstellen Sie den Container. Der Bau dieses Containers kann bis zu 10 Minuten dauern.
root@ubuntu-xenial:~/python/2.7# docker build -t mynode:python .
Wenn der Build abgeschlossen ist, wird die folgende Meldung angezeigt, damit Sie den Erfolg des Builds erkennen können.
Step 9 : RUN pip install --no-cache-dir virtualenv
---> Running in 3259e634ff72
Collecting virtualenv
Downloading virtualenv-15.1.0-py2.py3-none-any.whl (1.8MB)
Installing collected packages: virtualenv
Successfully installed virtualenv-15.1.0
---> b95cc31c623c
Removing intermediate container 3259e634ff72
Step 10 : CMD python2
---> Running in 3fb0181e560c
---> 25903811171b
Removing intermediate container 3fb0181e560c
Successfully built 25903811171b
Rufen Sie dann den Namen des Bluemix-Repositorys ab. Der Befehl cf ist das Cloud-Foundry-CLI-Tool, auf dem Bluemix basiert, und das nachfolgende ic ist ein Unterbefehl, der auf das Docker-Plug-In verweist.
root@ubuntu-xenial:~/docker/python/2.7# cf ic namespace get
takara_node
Kennzeichnen Sie Ihren lokalen Container mit dem Bluemix-Repository.
root@ubuntu-xenial:~/docker/python/2.7# docker tag mynode:python registry.ng.bluemix.net/takara_node/python
Registrieren Sie den erstellten Container mit dem folgenden Befehl im Bluemix-Repository.
root@ubuntu-xenial:~/docker/python/2.7# docker push registry.ng.bluemix.net/takara_node/python
Mit dem folgenden Befehl können Sie den registrierten gemeinsamen Container von Bluemix und Ihren eigenen registrierten Container riskieren. Sie können sehen, dass der Python-Container in der letzten Zeile registriert ist.
root@ubuntu-xenial:~/docker/python/2.7# cf ic images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.ng.bluemix.net/ibmnode latest acec21732cb5 11 days ago 192.5 MB
registry.ng.bluemix.net/ibmnode v4 acec21732cb5 11 days ago 192.5 MB
<Ausgelassen>
registry.ng.bluemix.net/ibmliberty webProfile7 6b2b8341fa32 5 weeks ago 276 MB
registry.ng.bluemix.net/takara_node/mynode1 latest 721caef84790 12 days ago 190.9 MB
registry.ng.bluemix.net/takara_node/python latest 17f60ad04c10 2 hours ago 334.4 MB
In diesem Zustand sollte der obige Container angezeigt werden, wenn Sie sich den Katalog im Bluemix-Portal ansehen. Unten rechts sehen Sie einen lila Behälter namens Python.
Sie können den Container auch über den Portalbildschirm des Webs starten, aber Sie können den Container auch mit dem folgenden CLI-Befehl starten.
root@ubuntu-xenial:~/python/2.7# cf ic run --name python -m 512 registry.ng.bluemix.net/takara_node/python:latest
Das erste Mal dauert es ungefähr 1 Minute, um den Container zu bauen. Während des Builds können Sie feststellen, dass es mit dem folgenden Befehl cf ic ps erstellt wird.
root@ubuntu-xenial:~/python/2.7# cf ic ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
edd1f16c-625 registry.ng.bluemix.net/takara_node/python:latest "" 15 seconds ago Building 14 seconds ago python
Sie können dies auch über das Bluemix-Portal überprüfen. Gebäudezustand des Containers
Erstellen Sie den vollständigen Status
Bildschirm mit den Containerdetails
Mit dem folgenden Befehl können Sie sich beim Container anmelden und Befehle über die Shell ausführen.
root@ubuntu-xenial:~/docker/python/2.7# cf ic exec -it python /bin/bash
root@instance-003624a8:/# ps -ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:00 bash /app/loop_wait
18 ? Ss 0:00 /bin/bash
24 ? S 0:00 sleep 60
25 ? Ss 0:00 /bin/bash
31 ? R+ 0:00 ps -ax
Verwenden Sie stop, um den Container anzuhalten.
root@ubuntu-xenial:~/python/2.7# cf ic ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cea800cf-862 registry.ng.bluemix.net/takara_node/python:latest "" 6 hours ago Running 6 hours ago python
26dba932-cc4 registry.ng.bluemix.net/takara_node/mynode1:latest "" 12 days ago Running 12 days ago 169.46.19.213:3000->3000/tcp mynode1
root@ubuntu-xenial:~/python/2.7# cf ic stop cea800cf-862
cea800cf-862
Verwenden Sie rm, um den Container zu löschen.
root@ubuntu-xenial:~/python/2.7# cf ic rm cea800cf-862
cea800cf-862
Verwenden Sie rmi, um das Bild des Containers zu löschen.
root@ubuntu-xenial:~/python/2.7# cf ic images
REPOSITORY TAG IMAGE ID CREATED SIZE
<Ausgelassen>
registry.ng.bluemix.net/takara_node/python latest 8cd32e284563 7 hours ago 310.2 MB
root@ubuntu-xenial:~/python/2.7# cf ic rmi registry.ng.bluemix.net/takara_node/python
Untagged: sha256:8cd32e2845639a3fad5bd6e26c7a57c3f69539cebbd846535bb99b634aa8b324
Verwenden Sie den Docker-Befehl, um das zum Erstellen in der lokalen Umgebung verwendete Image zu löschen.
root@ubuntu-xenial:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynode python 8cd32e284563 7 hours ago 852 MB
registry.ng.bluemix.net/takara_node/python latest 8cd32e284563 7 hours ago 852 MB
root@ubuntu-xenial:~# docker rmi mynode:python
Untagged: mynode:python
root@ubuntu-xenial:~# docker rmi registry.ng.bluemix.net/takara_node/python:latest
Stellen Sie sicher, dass MeCab installiert ist
root@instance-003624a8:/# mecab -v
mecab of 0.996
Bestätigung der Einführung von NLTK of Python
root@instance-003624a8:/# python
Python 2.7.13 (default, Feb 17 2017, 23:23:18)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import nltk
>>> nltk.download()
NLTK Downloader
---------------------------------------------------------------------------
d) Download l) List u) Update c) Config h) Help q) Quit
---------------------------------------------------------------------------
Downloader>