Docker-Dateispeicherpfad, Befehlsvorgang zum Starten des Containers abrufen

Docker-Dateispeicherpfad, Befehlsvorgang zum Starten des Containers abrufen

Der Container wurde bereits erstellt. So erfahren Sie seine Startparameter (wo die Daten gemountet sind)

#Angenommen, ein Container wird mit dem folgenden Befehl gestartet: docker run -d --name mysql\
-p 3306:3306\
-e MYSQL_ROOT_PASSWORD=123456\
--restart=immer\
mysql:5.5 --character-set-server=utf8

#So erhalten Sie die Startparameter über den Containernamen [root@jenkins ~]# docker inspect mysql_cdh
[
  {
    "ID": "fbc3fba81b57bc5b5871746098b5f1f7ef0ed7716a786584a5effbb88ba156e6",
    "Erstellt": "2019-09-25T01:43:37.720505875Z",
    "Pfad": "docker-entrypoint.sh",
    "Argumente": [
      „--character-set-server=utf8“
    ],

 "HostKonfiguration": {
      "Bindet": [
        „mysql-daten:/var/lib/mysql“
      ],
      "ContainerIDFile": "",
      "LogConfig": {
        "Typ": "json-Datei",
        "Konfiguration": {}
      },
      "Netzwerkmodus": "Standard",
      "PortBindings": {
        "3306/tcp": [{ "HostIp": "", "HostPort": "3306"}
        ]
      },
      "Neustartrichtlinie": {
        "Name": "immer",
        "MaximumRetryCount": 0
      },
  
"Reittiere": [
      {
        "Typ": "Volumen",
        "Name": "mysql-daten",
        "Quelle": "/var/lib/docker/volumes/mysql-data/_data",
        "Ziel": "/var/lib/mysql",
        "Treiber": "lokal",
        "Modus": "z",
        "RW": wahr,
        "Ausbreitung": ""
      }
    ],

1. Bildebene: Dateispeicherpfad

[root@master ~]# Docker-Image inspizieren nginx | ​​​​tail -n 22
    "GraphTreiber": {
      "Daten": {
        "LowerDir": "/var/lib/docker/overlay2/bf20cf788cc053f00ff1467525d50e19bd1cf07a2167f72511bdfcb28918a472/diff:/var/lib/docker/overlay2/317d80bb7ae58ed288be9ebd84aeb5b4b3a1c06f3211f5d1f32d89b629d1876e/diff",
        "MergedDir": "/var/lib/docker/overlay2/7782d0eb292fdc8bbd73bf9bae2d65468e8aba0bcd6baed55ac348618b80ae16/zusammengeführt",
        "UpperDir": "/var/lib/docker/overlay2/7782d0eb292fdc8bbd73bf9bae2d65468e8aba0bcd6baed55ac348618b80ae16/diff",
        "Arbeitsverzeichnis": "/var/lib/docker/overlay2/7782d0eb292fdc8bbd73bf9bae2d65468e8aba0bcd6baed55ac348618b80ae16/work"
      },
      "Name": "overlay2"
    },

2. Containerebene: Dateispeicherpfad

#1, Starten Sie den Container [root@master ~]# docker run -d --name nginx2 nginx
a9c9f31cdccf13c3385f3de33443325d2e14d69458e6d679e54c8cf9e5ff24c8

#2, Holen Sie sich die Container-ID
[root@master ~]# docker inspect nginx2 | grep -i id 
[root@master ~]# docker inspect nginx2 | grep -i id 
    "ID": "a9c9f31cdccf13c3385f3de33443325d2e14d69458e6d679e54c8cf9e5ff24c8",
      "Pid": 2069,
    "ExecIDs": null,
      "ContainerIDFile": "",
  
#Temporäre Containerdateien anzeigen – bei jeder Erstellung zufällig generierte Dateien (Containerebene)
[root@master ~]# docker inspect nginx2 | grep -i Pfad
    "Pfad": "nginx",
    "ResolvConfPath": "/var/lib/docker/containers/a9c9f31cdccf13c3385f3de33443325d2e14d69458e6d679e54c8cf9e5ff24c8/resolv.conf",
    "HostnamePfad": "/var/lib/docker/containers/a9c9f31cdccf13c3385f3de33443325d2e14d69458e6d679e54c8cf9e5ff24c8/hostname",
    "HostsPath": "/var/lib/docker/containers/a9c9f31cdccf13c3385f3de33443325d2e14d69458e6d679e54c8cf9e5ff24c8/hosts",
    "LogPath": "/var/lib/docker/containers/a9c9f31cdccf13c3385f3de33443325d2e14d69458e6d679e54c8cf9e5ff24c8/a9c9f31cdccf13c3385f3de33443325d2e14d69458e6d679e54c8cf9e5ff24c8-json.log",
 
#Verwenden Sie die Container-ID, um das Verzeichnis zu finden, in dem die Containerdaten gespeichert sind: /var/lib/docker/overlay2/containerid
######
#Im Vergleich zum obigen "Image-Layer: Dateispeicherpfad" können Sie sehen, dass der Container die Image-Layer-Dateien über die LowerDir-Mounting-Methode abbildet######
[root@master ~]# docker inspect nginx2 | grep -i dir
        "LowerDir": "/var/lib/docker/overlay2/d37ff828e63081be6fcfefc73891e7b455596cb921c8021fbf9571f330c0599b-init/diff:/var/lib/docker/overlay2/7782d0eb292fdc8bbd73bf9bae2d65468e8aba0bcd6baed55ac348618b80ae16/diff:/var/lib/docker/overlay2/bf20cf788cc053f00ff1467525d50e19bd1cf07a2167f72511bdfcb28918a472/diff:/var/lib/docker/overlay2/317d80bb7ae58ed288be9ebd84aeb5b4b3a1c06f3211f5d1f32d89b629d1876e/diff",
        "MergedDir": "/var/lib/docker/overlay2/d37ff828e63081be6fcfefc73891e7b455596cb921c8021fbf9571f330c0599b/zusammengeführt",
        "UpperDir": "/var/lib/docker/overlay2/d37ff828e63081be6fcfefc73891e7b455596cb921c8021fbf9571f330c0599b/diff",
        "Arbeitsverzeichnis": "/var/lib/docker/overlay2/d37ff828e63081be6fcfefc73891e7b455596cb921c8021fbf9571f330c0599b/work"

Containerhafen übermorgen ändern

Suchen Sie die Konfigurationsdatei hostconfig.json über die Container-Layer-Datei und ändern Sie den vom Container zugeordneten Port

[root@docker d93185e3a0....2e544ccfa]# pwd
/var/lib/docker/containers/d93185e3a0....2e544ccfa
[root@docker d93185e3a0....2e544ccfa]# cat hostconfig.json 
{"Bindet":["/dockersuperset:/home/superset"],"ContainerIDFile":"",
"LogConfig":{"Typ":"json-Datei","Konfiguration":{}},"Netzwerkmodus":"Standard",
"PortBindings":{"8088/tcp":[{"HostIp":"","HostPort":"8099"}]}......

3. Geben Sie das Dateispeicherverzeichnis des Spiegelcontainers ein und ändern Sie die Konfigurationsdatei

# Geben Sie das Dateispeicherverzeichnis des Spiegelcontainers ein und ändern Sie die Konfigurationsdatei [root@master ~]# cd /var/lib/docker/overlay2/d37ff828e63081be6fcfefc73891e7b455596cb921c8021fbf9571f330c0599b
[root@master d37ff828e63081be6fcfefc73891e7b455596cb921c8021fbf9571f330c0599b]# ls
Diff Link unten zusammengeführt Arbeit

[root@master d37ff828e63081be6fcfefc73891e7b455596cb921c8021fbf9571f330c0599b]# ls diff /ausführen/
nginx.pid
[root@master d37ff828e63081be6fcfefc73891e7b455596cb921c8021fbf9571f330c0599b]# ls diff /var/cache/nginx/
client_temp fastcgi_temp proxy_temp scgi_temp uwsgi_temp

[root@master d37ff828e63081be6fcfefc73891e7b455596cb921c8021fbf9571f330c0599b]# ls zusammengeführt/
bin/ dev/ etc/ lib/ media/ opt/ root/ sbin/ sys/ usr/    
boot/ .dockerenv home/ lib64/ mnt/ proc/ run/ srv/ tmp/ var/    

[root@master d37ff828e63081be6fcfefc73891e7b455596cb921c8021fbf9571f330c0599b]# ls zusammengeführt/etc/nginx/
conf.d fastcgi_params koi-utf koi-win mime.types module nginx.conf scgi_params uwsgi_params win-utf

[root@master d37ff828e63081be6fcfefc73891e7b455596cb921c8021fbf9571f330c0599b]# Kopf zusammengeführt/etc/nginx/nginx.conf 
Benutzer nginx;
Arbeiterprozesse 1;

#Ändern Sie hier die Konfigurationsdatei, entfernen Sie die Semikolons der beiden Zeilen user nginx; worker_process 1; um zu sehen, ob sich die Konfiguration im Container geändert hat [root@master d37ff828e63081be6fcfefc73891e7b455596cb921c8021fbf9571f330c0599b]# head merged/etc/nginx/nginx.conf -n 3
Benutzer nginx
Arbeitsprozesse 1

#Melden Sie sich beim Container an und zeigen Sie die geänderte Konfiguration an: Überprüfen Sie, ob sie wirksam ist [root@master d37ff828e63081be6fcfefc73891e7b455596cb921c8021fbf9571f330c0599b]# docker exec -it nginx2 bash
root@a9c9f31cdccf:/# Kopf /etc/nginx/nginx.conf -n 3
Benutzer nginx
Arbeitsprozesse 1

4. Ändern Sie den Standardspeicherpfad

a, Erstellen Sie das Verzeichnis /var/lib/docker neu. #Sichern Sie die Daten im neuen Speicherpfad. Service Docker Stop
mkdir /docker.bak
mv /var/lib/docker/* /docker.bak

#Erstellen Sie einen Softlink mkdir /home/docker-data
mv /docker.bak/* /home/docker-data/ && rmdir /docker.bak
ln -s /home/docker-data /var/lib/docker
b. Ändern Sie die Konfiguration vi /usr/lib/systemd/system/docker.service 
ExecStart=/usr/bin/dockerd --graph /neuer-Pfad/docker 

#Konfigurationsdatei neu laden systemctl daemon-reload 
#Docker neu starten 
systemctl Neustart docker.service

Zusatzwissen: Docker gibt das Datenspeicherverzeichnis an

Docker gibt das Speicherverzeichnis an (der ursprüngliche Parameter --graph ist ungültig.)

Methode 1

1. Konfigurieren Sie /etc/docker/daemon.json in der Docker-Konfigurationsdatei

Der folgende Befehl wird hinzugefügt, wenn die Datei daemon.json keinen Inhalt hat. Wenn es Inhalte gibt, brauchen Sie

Katze << EOF >>/etc/docker/daemon.json
{
  "Datenstamm": "/mnt/docker-data"
}
Ende der Laufzeit
systemctl Neustart Docker

Methode 2

2. Konfigurieren Sie die Startparameter

vim /usr/lib/systemd/system/docker.service

Fügen Sie nach EXECStart Folgendes hinzu:

ExecStart=/usr/bin/dockerd --data-root='/home/docker'
systemctl daemon-reload
systemctl Neustart Docker

Der obige Artikel über den Docker-Dateispeicherpfad und den Abruf des Container-Startbefehls ist der gesamte Inhalt, den der Herausgeber mit Ihnen teilt. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • Jedes Mal, wenn Docker einen Container startet, werden die IP und die Hosts mit den angegebenen Operationen
  • Detaillierte Erläuterung der Startreihenfolge des Docker-Containers mithilfe eines Shell-Skripts
  • Docker ändert die Konfigurationsinformationen eines nicht gestarteten Containers
  • Dockerfile-Implementierungscode beim Starten von zwei Prozessen in einem Docker-Container
  • Lösen Sie das Problem, dass Docker-Container sofort nach dem Start beendet werden
  • Docker-Batch starten und alle Container schließen

<<:  Lösungen für das Problem der Erstellung von XHTML- und CSS-Webseiten

>>:  Analyse der MySQL-Transaktionsmerkmale und Ebenenprinzipien

Artikel empfehlen

Detaillierte Erläuterung des Redo-Logs und Undo-Logs in MySQL

Die wichtigsten Protokolle im MySQL-Protokollsyst...

Front-End-Statusverwaltung (Teil 1)

Inhaltsverzeichnis 1. Was ist Front-End-Statusver...

Alibaba Cloud beantragt ein kostenloses SSL-Zertifikat (https) von Cloud Shield

Da das Projekt den https-Dienst nutzen muss, habe...

Zusammenfassung der 10 gängigen HBase-Betriebs- und Wartungstools

Zusammenfassung: HBase verfügt über zahlreiche Be...

Eine kurze Diskussion zur Auftragsrekonstruktion: MySQL-Sharding

Inhaltsverzeichnis 1. Ziele 2. Umweltvorbereitung...

5 Möglichkeiten, um festzustellen, ob ein Objekt in JS ein leeres Objekt ist

1. Konvertieren Sie das JSON-Objekt in eine JSON-...

Informationen zur Verwendung des Iconfont-Vektorsymbols von Alibaba in Vue

Es gibt viele Importmethoden im Internet, und die...

Detaillierte Erklärung des Abstandsproblems zwischen IMG-Tags

Grundlegende Analyse des IMG-Tags: In HTML5 beste...

Implementierung neuer Probleme mit CSS3-Selektoren

Inhaltsverzeichnis Grundlegende Selektorerweiteru...