English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

DockerContainerVerwendung

Docker 客户端

docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。

w3codebox@w3codebox:~# docker

可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。

例如我们要查看 docker stats 指令的具体使用方法:

w3codebox@w3codebox:~# docker stats --help

容器使用

获取镜像

如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:

$ docker pull ubuntu

启动容器

以下命令使用  ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:

$ docker run -it ubuntu /bin/bash

参数说明:

  • -i: 交互式操作。

  • -t: 终端。

  • ubuntu: ubuntu 镜像。

  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

要退出终端,直接输入 exit:

root@ed09e4490c57:/# exit

启动已停止运行的容器

查看所有的容器命令如下:

$ docker ps -a

点击图片查看大图:

使用 docker start 启动一个已停止的容器:

$ docker start b750bbbcfd88

后台运行

在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。

$ docker run -itd --name ubuntu-test ubuntu /bin/bash

点击图片查看大图:

注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec(下面会介绍到)。

停止一个容器

停止容器的命令如下:

$ docker stop <容器 ID>

停止的容器可以通过 docker restart 重启:

$ docker restart <容器 ID>

进入容器

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

  • docker attach

  • docker exec:请大家使用 docker exec 命令,因为此命令退出容器终端时,不会导致容器停止。

attach Befehl

Nachstehend wird die Verwendung des docker attach Befehls demonstriert.

$ docker attach 1e560fca3906

Hinweis: Wenn Sie aus diesem Container aussteigen, wird der Container angehalten.

exec Befehl

Nachstehend wird die Verwendung des docker exec Befehls demonstriert.

docker exec -it 243c32535da7 /bin/bash

Hinweis: Wenn Sie aus diesem Container aussteigen, wird der Container nicht gestoppt, daher wird empfohlen, docker exec Grund.

Mehr Parameterbeschreibungen verwenden docker exec --hilfe Befehl anzeigen.

Exportieren und Importieren von Containern

Exportieren Sie den Container

Wenn Sie einen lokalen Container exportieren möchten, können Sie docker export Befehl.

$ docker export 1e560fca3906 > ubuntu.tar

Exportieren Sie den Container 1e560fca3906 Schnappschuss in lokale Datei  ubuntu.tar.

Dadurch wird der Container-Snapshot in eine lokale Datei exportiert.

Importieren Sie den Container-Snapshot

Sie können docker import verwenden, um aus Container-Snapshots wieder Abbilder zu importieren. Der folgende Beispiel importiert den Snapshotdatei ubuntu.tar in das Abbild test./ubuntu:v1:

$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1

Außerdem kann durch Angabe einer URL oder eines bestimmten Verzeichnisses importiert werden, z.B.:

$ docker import http://example.com/exampleimage.tgz example/imagerepo

Löschen Sie den Container

Verwendung zum Löschen von Containern docker rm Befehl:

$ docker rm -f 1e560fca3906

Die folgenden Befehle können alle abgeschlossenen Container bereinigen.

$ docker container prune

Führen Sie eine Webanwendung aus

Der von uns ausgeführte Container hat keine besondere Funktion.

Lassen Sie uns nun versuchen, eine Webanwendung mit Docker zu erstellen.

Wir werden eine Python Flask-Anwendung im Docker-Container ausführen, um eine Webanwendung zu betreiben.

w3codebox@w3codebox:~# docker pull training/webapp  # Laden Sie das Abbild
w3codebox@w3codebox:~# docker run -d -P training/webapp python app.py

Parameterbeschreibung:

  • -d:Lassen Sie den Container im Hintergrund laufen.

  • -P:Karten Sie die Netzwerkports, die im Container verwendet werden, zufällig auf den von uns verwendeten Host.

Betrachten Sie das Web-Anwendungskontainer

使用 docker ps 来查看我们正在运行的容器:

w3codebox@w3codebox:~# docker ps
CONTAINER ID        IMAGE               COMMAND             ...        PORTS                 
d3d5e39ed9d3        training/webapp "python app.py" ... 0.0.0.0:32769->5000/tcp

Hier gibt es zusätzliche Portinformationen.

PORTS
0.0.0.0:32769->5000/tcp

Docker hat 5000 Port (Standardport für Python Flask) wird auf den Hostport gemappt 32769 .

Dann können wir die WEB-Anwendung über den Browser aufrufen

Wir können auch -p Parameter, um einen anderen Port zu setzen:

w3codebox@w3codebox:~$ docker run -d -p 5000:5000 training/webapp python app.py

docker psAnzeigen der laufenden Container

w3codebox@w3codebox:~# docker ps
CONTAINER ID        IMAGE                             PORTS                     NAMES
bf08b7f2cd89        training/webapp     ...          0.0.0.0:5000->5000/tcp    wizardly_chandrasekhar
d3d5e39ed9d3        training/webapp     ...          0.0.0.0:32769->5000/tcp xenodochial_hoov

Innerhalb des Containers 5000 Port wird auf den lokalen Host gezeigt 5000 Port.

Kurzwahl für Netzwerkport

durch docker ps Der Befehl zeigt die Portzuweisung des Containers andocker Es wurde auch eine andere Kurzwahl bereitgestellt docker port, mit docker port Es kann die bestimmte Portzuweisung eines bestimmten (ID oder Name) Containers an den Hostport ansehen.

Der ID des von uns erstellten WEB-Anwendungskontainers ist bf08b7f2cd89  Der Name wizardly_chandrasekhar.

Ich kann docker port bf0 verwenden8b7f2cd89  oder docker port wizardly_chandrasekhar, um die Portzuweisung des Containers anzuzeigen.

w3codebox@w3codebox:~$ docker port bf08b7f2cd89
5000/tcp -> 0.0.0.0:5000
w3codebox@w3codebox:~$ docker port wizardly_chandrasekhar
5000/tcp -> 0.0.0.0:5000

Anzeigen des WEB-Anwendungsjournals

docker logs [ID oder Name] zeigt den Standardausgang des Containers an.

w3codebox@w3codebox:~$ docker logs -f bf08b7f2cd89
 * Läuft auf http://0.0.0.0:5000/ (Drücken Sie STRG+C zum Beenden)
192.168.239.1 - - [09/May/2016 16:30:37] "GET / HTTP/1.1" 200 -
192.168.239.1 - - [09/May/2016 16:30:37] "GET /favicon.ico HTTP/1.1" 404 -

-f: Lassen docker logs Wie man tail -f Genau wie ausgegeben wird, um den Standardausgang des Containers anzuzeigen

Von oben können wir sehen, dass die Anwendung die verwendet 5000 Port und können den Zugriffsnachweis der Anwendung sehen.

查看WEB应用程序容器的进程

我们还可以使用 docker top 来查看容器内部运行的进程

w3codebox@w3codebox:~$ docker top wizardly_chandrasekhar
UID     PID         PPID          ...       TIME                CMD
root    23245       23228         ...       00:00:00            python app.py

检查 WEB 应用程序

使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。

w3codebox@w3codebox:~$ docker inspect wizardly_chandrasekhar
[
    {
        "Id": "bf0"8b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85",
        "Created": "2018-09-17T01:41:26.174228707Z",
        "Path": "python",
        "Args": [
            "app.py"
        ],
        "State": {
            
            
            
            
            
            "Dead": false,
            "Pid": 23245
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2018-09-17T01:41:26.494185806Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        }
......

停止 WEB 应用容器

w3codebox@w3codebox:~$ docker stop wizardly_chandrasekhar   
wizardly_chandrasekhar

重启WEB应用容器

已经停止的容器,我们可以使用命令 docker start 来启动。

w3codebox@w3codebox:~$ docker start wizardly_chandrasekhar
wizardly_chandrasekhar

docker ps -l 查询最后一次创建的容器:

#  docker ps -l 
CONTAINER ID        IMAGE                             PORTS                     NAMES
bf08b7f2cd89        training/webapp     ...          0.0.0.0:5000->5000/tcp    wizardly_chandrasekhar

Läufende Container können mit dem Befehl docker restart neu gestartet werden

Entfernen Sie den WEB-Anwendungskontainer

Wir können den Befehl docker rm verwenden, um nicht benötigte Container zu löschen

w3codebox@w3codebox:~$ docker rm wizardly_chandrasekhar  
wizardly_chandrasekhar

Beim Löschen eines Containers muss der Container im Standby-Modus sein, andernfalls wird der folgende Fehler ausgegeben

w3codebox@w3codebox:~$ docker rm wizardly_chandrasekhar
Fehlermeldung vom Daemon: Sie können keinen laufenden Container bf0 entfernen8b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85. Beenden Sie das Container vor dem Versuch der Entfernung oder erzwungenen Entfernung