Heim  >  Artikel  >  System-Tutorial  >  Beginnen Sie in fünf Minuten mit Docker

Beginnen Sie in fünf Minuten mit Docker

WBOY
WBOYnach vorne
2024-01-02 14:29:52816Durchsuche
Was ist Docker?

Docker ist eine Open-Source-Container-Engine, und ein Container ist eigentlich eine virtualisierte, unabhängige Umgebung. Daher können Entwickler Anwendungen in einen solchen Docker-Container packen und sie dann auf jedem Computer veröffentlichen, der den Docker-Container ausführen kann, um mehrere Pakete zu erstellen und bereitzustellen Orte auf einmal, um Bereitstellungsprobleme zu lösen, die durch Umweltprobleme verursacht werden.

Ein dem Container entsprechendes Konzept ist das Image. Das Image kann als Image unseres täglichen Installationssystems betrachtet werden, bei dem es sich um eine laufende Umgebung handelt. Natürlich vergleiche ich in unserer objektorientierten Programmierung lieber ein Bild mit einer Klasse, und ein Container ist eine Instanz einer Klasse, sodass viele Container basierend auf einem Bild erstellt werden können. Jeder Container ist spezifisch. Wir können Änderungen am Container vornehmen und den Container dann in ein neues Image packen, sodass in Zukunft neue Container basierend auf dem geänderten Image erstellt werden können. Der Container selbst kann einfach als virtuelle, unabhängige Betriebsumgebung verstanden werden. Wir müssen unsere Anwendung in diese Umgebung packen, um sie wieder einfach bereitstellen zu können.
Beginnen Sie in fünf Minuten mit Docker

Docker installieren

Gentoo

# emerge --ask docker

CentOS

# yum install docker-ce

Ubuntu

# apt-get install docker-ce

Bogen

# pacman -S docker
Starten Sie den Docker-Daemon
# systemctl start docker
Docker-Befehlseinführung
# docker --help
管理命令:
  container   管理容器
  image       管理镜像
  network     管理网络
命令:
  attach      介入到一个正在运行的容器
  build       根据 Dockerfile 构建一个镜像
  commit      根据容器的更改创建一个新的镜像
  cp          在本地文件系统与容器中复制 文件/文件夹
  create      创建一个新容器
  exec        在容器中执行一条命令
  images      列出镜像
  kill        杀死一个或多个正在运行的容器    
  logs        取得容器的日志
  pause       暂停一个或多个容器的所有进程
  ps          列出所有容器
  pull        拉取一个镜像或仓库到 registry
  push        推送一个镜像或仓库到 registry
  rename      重命名一个容器
  restart     重新启动一个或多个容器
  rm          删除一个或多个容器
  rmi         删除一个或多个镜像
  run         在一个新的容器中执行一条命令
  search      在 Docker Hub 中搜索镜像
  start       启动一个或多个已经停止运行的容器
  stats       显示一个容器的实时资源占用
  stop        停止一个或多个正在运行的容器
  tag         为镜像创建一个新的标签
  top         显示一个容器内的所有进程
  unpause     恢复一个或多个容器内所有被暂停的进程

Es gibt umfangreichere Optionen in Unterbefehlen, die mit docker COMMAND --help angezeigt werden können. Zum Beispiel:

#docker run --help

Docker-Nutzung in der Praxis

Als nächstes werde ich Docker verwenden, um als Beispiel einen Nginx-Server bereitzustellen. Um einen Container zu erstellen, benötigen wir zunächst ein Image, das zum Erstellen des Containers verwendet wird. Finden Sie Nginx-bezogene Bilder im Docker Hub.

# docker search nginx
NAME                                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                                                  Official build of Nginx.                        6959      [OK]
jwilder/nginx-proxy                                    Automated Nginx reverse proxy for docker c...   1134                 [OK]
richarvey/nginx-php-fpm                                Container running Nginx + PHP-FPM capable ...   452                  [OK]
...
...

Ziehen Sie sich das offizielle Bild oben an, das von Benutzern nach ihren eigenen Bedürfnissen erstellt wurde, um es allen zu erleichtern.

# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
afeb2bfd31c0: Pull complete
7ff5d10493db: Downloading [===============>                                   ] 6.651 MB/21.87 MB
d2562f1ae1d0: Download complete

Docker-Bilder werden übrigens in Ebenen gespeichert, sodass das obige Nginx-Bild drei Ebenen hat. Außerdem wird dem Bild jedes Mal eine Ebene hinzugefügt, wenn ein neues Bild basierend auf einem neuen Container erstellt wird.
Als nächstes verwenden Sie dieses Bild, um direkt einen neuen Container zu starten:

# docker run --name my-nginx -d -p 8080:80 nginx

Geben Sie zu diesem Zeitpunkt Folgendes in den Browser ein: http://localhost:8080/, um auf nginx zuzugreifen. Parametererklärung:

  • --name Geben Sie dem Container einen Namen
  • Die Syntax des Parameters
  • -p lautet -p Host-Port:Container-Port; -p 8080:80 bindet Port 8080 auf dem Host an Port 80 auf dem Container, sodass beim Zugriff auf Port 8080 auf dem Host tatsächlich auf Port 80 des Nginx-Containers zugegriffen wird
  • -d führt den Container im Hintergrund aus

Dann schauen wir uns ein komplexeres Beispiel an:

# docker run --name my-nginx \ 
    -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro \
    -v /some/html:/usr/share/nginx/html:ro \
    -p 8080:80 \
    -d nginx

Dieses Beispiel hat einen zusätzlichen Parameter -v. Die Funktion dieses Parameters besteht darin, lokale Dateien oder Ordner in den Container einzuhängen. Das letzte ro oder rw steuert, ob der Mount beschreibbar ist.

    Die Syntax des Parameters
  • -v lautet -v Host-Verzeichnis:Container-Verzeichnis[:ro|rw]

Der obige Befehl stellt die Konfigurationsdatei nginx.conf in der lokalen Datei im Container bereit und stellt außerdem die anzuzeigende statische Seite im Container bereit. Hinweis: Nachdem der Container einen Befehl ausgeführt hat und der Befehl endet, wird auch der Container beendet.

Als nächstes schauen wir uns andere Docker-Befehle an.

Alle laufenden Container anzeigen:

# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
1fe91b5a4cd4        nginx               "nginx -g 'daemon ..."   39 minutes ago      Up 39 minutes       0.0.0.0:8080->80/tcp   my-nginx
# docker ps -a ### 列出包括未运行的容器

Container-Laufprotokolle anzeigen:

# docker logs my-nginx
172.17.0.1 - - [05/Oct/2017:07:31:11 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" "-"
2017/10/05 07:31:11 [error] 7#7: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "localhost:8080"

Container neu starten:

# docker restart my-nginx
my-nginx

Beenden Sie die Ausführung eines Containers:

# docker stop my-nginx
my-nginx
# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Starten Sie einen vorhandenen Container:

# docker start my-nginx
my-nginx
# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
1fe91b5a4cd4        nginx               "nginx -g 'daemon ..."   50 minutes ago      Up 3 seconds        0.0.0.0:8080->80/tcp   my-nginx

Töte einen laufenden Container direkt:

# docker kill my-nginx

Container umbenennen:

# docker rename my-nginx new-nginx

Container löschen:

# docker rm new-nginx

Alle Bilder dieser Maschine anzeigen:

# docker imags

Erstellen Sie ein Bild mit einem vorhandenen Container:

# docker commit -m "nothing changed" my-nginx my-nginx-image
sha256:f02483cdb842a0dc1730fe2c653603fa3271e71c31dbb442caccd7ad64860350
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
my-nginx-image      latest              f02483cdb842        6 seconds ago       108 MB
nginx               latest              da5939581ac8        3 weeks ago         108 MB

Erstellen Sie einen Container mit dem Bild, das wir selbst erstellt haben:

# docker run --name test -d -p 8081:80 my-nginx-image
12ba86eabdef0121d875bdb547f1101d4eb54ff7cb36e20214fb1388659af83d
# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
12ba86eabdef        my-nginx-image      "nginx -g 'daemon ..."   7 seconds ago       Up 5 seconds        0.0.0.0:8081->80/tcp   test
299f4ede9e79        nginx               "nginx -g 'daemon ..."   11 minutes ago      Up 11 minutes       0.0.0.0:8080->80/tcp   my-nginx

Wenn der Startbefehl des von uns verwendeten Containers eine Shell ist, können wir mit dem Befehl „attach“ in den Container eingreifen, genau wie wir ssh verwenden, um eine Verbindung zu einem Server herzustellen.

# docker attach some-container

Starten Sie direkt beim Erstellen eines Containers eine interaktive Shell und löschen Sie den Container nach dem Beenden automatisch:

# docker run -it --rm  centos
Zusammenfassung

Dieser Artikel stellt die einfache Verwendung von Docker vor und gibt außerdem ein praktisches Beispiel, um die verschiedenen Operationen des Docker-Befehls zu demonstrieren. Als Schnellstartartikel ist dieser Artikel relativ einfach. Viele konzeptionelle Dinge erfordern das Lesen anderer Informationen, aber nach dem Lesen dieses Artikels sollten Sie über grundlegende Kenntnisse im Umgang mit Docker verfügen. Darüber hinaus sollten nachfolgende Artikel über Dockerfile und Docker-Compose schreiben.

Das obige ist der detaillierte Inhalt vonBeginnen Sie in fünf Minuten mit Docker. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:linuxprobe.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen