日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图形化管理工具Portaniner安 以及 Docker镜像详解(三)

發布時間:2024/3/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图形化管理工具Portaniner安 以及 Docker镜像详解(三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

      • 圖形化管理工具Portaniner安裝
      • Docker鏡像詳解
        • 1 什么是鏡像
        • 2 Docker鏡像加載原理
        • 3 分層理解
      • 提交鏡像
      • 常用容器部署
        • Nginx部署

圖形化管理工具Portaniner安裝

Portaniner是Docker的圖形化管理工具,類似的工具還有Rancher(CI/CD再用)

下載運行Portaniner鏡像并運行,設置本機映射端口為8088

[root@localhost conf]# docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer Unable to find image 'portainer/portainer:latest' locally latest: Pulling from portainer/portainer 94cfa856b2b1: Pull complete 49d59ee0881a: Pull complete a2300fd28637: Pull complete Digest: sha256:fb45b43738646048a0a0cc74fcee2865b69efde857e710126084ee5de9be0f3f Status: Downloaded newer image for portainer/portainer:latest 8c525a0137be22965bd1e3944da622a2c4248f8ad20883f4b3ea4f8a6b11e163 [root@iZwz99sm8v95sckz8bd2c4Z ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7789d4505a00 portainer/portainer "/portainer" 6 seconds ago Up 5 seconds 0.0.0.0:8088->9000/tcp quirky_sinoussi

第一次登錄設置admin用戶的密碼

如果是阿里云服務器記得設置安全組,選擇連接本地的Docker,整體界面預覽如下圖:

Docker鏡像詳解

1 什么是鏡像

鏡像是一種輕量級、可執行的獨立軟件包,用來打包軟件運行環境和基于運行環境開發的軟件,它包含運行某個軟件所需要的所有內容,包括代碼,運行時(一個程序在運行或者在被執行的依賴)、庫,環境變量和配置文件。4

2 Docker鏡像加載原理

Docker的鏡像實際上由一層一層的文件系統組成,這種層級的文件系統是UnionFS聯合文件系統。

3 分層理解

我們下載鏡像的時候 可以看到是一層一層的在下載的

[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker image inspect nginx:latest [{"Id": "sha256:ae2feff98a0cc5095d97c6c283dcd33090770c76d63877caa99aefbbe4343bdd","RepoTags": ["nginx:latest"],"RepoDigests": ["nginx@sha256:4cf620a5c81390ee209398ecc18e5fb9dd0f5155cd82adcbae532fec94006fb9"],"Parent": "","Comment": "","Created": "2020-12-15T20:21:00.007674532Z","Container": "4cc5da85f27ca0d200407f0593422676a3bab482227daee044d797d1798c96c9","ContainerConfig": {"Hostname": "4cc5da85f27c","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"80/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.19.6","NJS_VERSION=0.5.0","PKG_RELEASE=1~buster"],"Cmd": ["/bin/sh","-c","#(nop) ","CMD [\"nginx\" \"-g\" \"daemon off;\"]"],"Image": "sha256:13bffe371b56f4aeed88218ec17d0c6f653a83b49bd3e211fc8cfa2ca5d7a3d3","Volumes": null,"WorkingDir": "","Entrypoint": ["/docker-entrypoint.sh"],"OnBuild": null,"Labels": {"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"},"StopSignal": "SIGQUIT"},"DockerVersion": "19.03.12","Author": "","Config": {"Hostname": "","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"80/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.19.6","NJS_VERSION=0.5.0","PKG_RELEASE=1~buster"],"Cmd": ["nginx","-g","daemon off;"],"Image": "sha256:13bffe371b56f4aeed88218ec17d0c6f653a83b49bd3e211fc8cfa2ca5d7a3d3","Volumes": null,"WorkingDir": "","Entrypoint": ["/docker-entrypoint.sh"],"OnBuild": null,"Labels": {"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"},"StopSignal": "SIGQUIT"},"Architecture": "amd64","Os": "linux","Size": 132935043,"VirtualSize": 132935043,"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/cb791e78a08db7091bf2ce1d78603f1758f52199e57f1805156fe30e39067aae/diff:/var/lib/docker/overlay2/1e73a72b25af68ee9abf4eb443f778d31226e12e9af428fcc14c7b044c83b258/diff:/var/lib/docker/overlay2/88c9c01762f2af8327db65d0b0d4a64785e87c9c2ab76c62e7d03619db03a985/diff:/var/lib/docker/overlay2/7304ab112ac4a9cb91fc6f74730be28fecbe19f042e92d321aa9181424cc4b2e/diff","MergedDir": "/var/lib/docker/overlay2/48b288740bbb2b07b41ed43a4d17a005c46b08d3357d2960b5ef7db4b2de6618/merged","UpperDir": "/var/lib/docker/overlay2/48b288740bbb2b07b41ed43a4d17a005c46b08d3357d2960b5ef7db4b2de6618/diff","WorkDir": "/var/lib/docker/overlay2/48b288740bbb2b07b41ed43a4d17a005c46b08d3357d2960b5ef7db4b2de6618/work"},"Name": "overlay2"},"RootFS": {"Type": "layers","Layers": ["sha256:87c8a1d8f54f3aa4e05569e8919397b65056aa71cdf48b7f061432c98475eee9","sha256:5c4e5adc71a82a96f02632433de31c998c5a9e2fccdcbaee780ae83158fac4fa","sha256:7d2b207c26790f693ab1942bbe26af8e2b6a14248969e542416155a912fec30d","sha256:2c7498eef94aef8c40d106f3e42f7da62b3eee8fd36012bf7379becc4cd639a2","sha256:4eaf0ea085df254fd5d2beba4e2c11db70a620dfa411a8ad44149e26428caee4"]},"Metadata": {"LastTagTime": "0001-01-01T00:00:00Z"}} ]

這里指示了分層信息:

"RootFS": {"Type": "layers","Layers": ["sha256:87c8a1d8f54f3aa4e05569e8919397b65056aa71cdf48b7f061432c98475eee9","sha256:5c4e5adc71a82a96f02632433de31c998c5a9e2fccdcbaee780ae83158fac4fa","sha256:7d2b207c26790f693ab1942bbe26af8e2b6a14248969e542416155a912fec30d","sha256:2c7498eef94aef8c40d106f3e42f7da62b3eee8fd36012bf7379becc4cd639a2","sha256:4eaf0ea085df254fd5d2beba4e2c11db70a620dfa411a8ad44149e26428caee4"]},




特點:Docker鏡像都是只讀的,當容器啟動的時候,一個新的可寫層被加載到鏡像的頂部!
這一層就是我們通常所說的容器層,容器之下都叫鏡像層!

提交鏡像

使用docker commit 命令提交容器成為一個新的版本

docker commit -m=“提交的描述信息” -a=“作者” 容器id 目標鏡像名:[TAG]

#由于默認的Tomcat鏡像的webapps文件夾中沒有任何內容,需要從webapps.dist中拷貝文件到webapps文件夾。 #下面自行制作鏡像:就是從webapps.dist中拷貝文件到webapps文件夾下,并提交該鏡像作為一個新的鏡像。使得該鏡像默認的webapps文件夾下就有文件。具體命令如下: #1.復制文件夾 [root@localhost ~]# docker run -it tomcat /bin/bash root@2a3bf3eaa2e4:/usr/local/tomcat# cd webapps root@2a3bf3eaa2e4:/usr/local/tomcat/webapps# ls root@2a3bf3eaa2e4:/usr/local/tomcat/webapps# cd ../ root@2a3bf3eaa2e4:/usr/local/tomcat# cp -r webapps.dist/* webapps root@2a3bf3eaa2e4:/usr/local/tomcat# cd webapps root@2a3bf3eaa2e4:/usr/local/tomcat/webapps# ls ROOT docs examples host-manager manager [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2a3bf3eaa2e4 tomcat "/bin/bash" 4 minutes ago Up 4 minutes 8080/tcp competent_torvalds 7789d4505a00 portainer/portainer "/portainer" 24 hours ago Up 24 hours 0.0.0.0:8088->9000/tcp quirky_sinoussi [root@localhost ~]# docker exec -it 2a3bf3eaa2e4 /bin/bash root@2a3bf3eaa2e4:/usr/local/tomcat# cd webapps root@2a3bf3eaa2e4:/usr/local/tomcat/webapps# ls ROOT docs examples host-manager manager root@2a3bf3eaa2e4:/usr/local/tomcat/webapps# cd ../ root@2a3bf3eaa2e4:/usr/local/tomcat# read escape sequence [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2a3bf3eaa2e4 tomcat "/bin/bash" 8 minutes ago Up 8 minutes 8080/tcp competent_torvalds 7789d4505a00 portainer/portainer "/portainer" 24 hours ago Up 24 hours 0.0.0.0:8088->9000/tcp quirky_sinoussi #2.提交鏡像作為一個新的鏡像[root@localhost ~]# docker commit -m="add webapps" -a="Ethan" 2a3bf3eaa2e4 mytomcat:1.0 sha256:f189aac861de51087af5bc88a5f1de02d9574e7ee2d163c647dd7503a2d3982b [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mytomcat 1.0 f189aac861de 7 seconds ago 653MB mysql 5.7 f07dfa83b528 6 days ago 448MB tomcat latest feba8d001e3f 10 days ago 649MB nginx latest ae2feff98a0c 12 days ago 133MB centos latest 300e315adb2f 2 weeks ago 209MB portainer/portainer latest 62771b0b9b09 5 months ago 79.1MB elasticsearch 7.6.2 f29a1ee41030 9 months ago 791MB#3.運行容器[root@localhost ~]# docker run -it mytomcat:1.0 /bin/bash root@1645774d4605:/usr/local/tomcat# cd webapps root@1645774d4605:/usr/local/tomcat/webapps# ls ROOT docs examples host-manager manager localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mytomcat 1.0 f189aac861de 7 seconds ago 653MB mysql 5.7 f07dfa83b528 6 days ago 448MB tomcat latest feba8d001e3f 10 days ago 649MB nginx latest ae2feff98a0c 12 days ago 133MB centos latest 300e315adb2f 2 weeks ago 209MB portainer/portainer latest 62771b0b9b09 5 months ago 79.1MB elasticsearch 7.6.2 f29a1ee41030 9 months ago 791MB

常用容器部署

Nginx部署

(1)搜索并下載鏡像

[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE [root@localhost ~]# docker search nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx Official build of Nginx. 16084 [OK] jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 2106 [OK] richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 820 [OK] jc21/nginx-proxy-manager Docker container for managing Nginx proxy ho… 307 linuxserver/nginx An Nginx container, brought to you by LinuxS… 161 tiangolo/nginx-rtmp Docker image with Nginx using the nginx-rtmp… #下載[root@localhost ~]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx a2abf6c4d29d: Pull complete a9edb18cadd1: Pull complete 589b7251471a: Pull complete 186b1aaa4aa6: Pull complete b4df32aa5a72: Pull complete a0bcbecc962e: Pull complete Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31 Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest#查看 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 605c77e624dd 8 days ago 141MB

可以到dockerhub官網查看Nginx的詳細版本信息 :https://hub.docker.com/_/nginx

docker run -d --name nginx01 -p 3334:80 nginx
-d 后臺運行
–name 給容器命名
-p 3334:80 將宿主機的端口3334映射到該容器的80端口

[root@localhost ~]# docker run -d --name nginx01 -p 3334:80 nginx 6cda01502b8b3a4077cfce1aca83a9dde4de5063e1a88ac0388a3b0f658468b3[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6cda01502b8b nginx "/docker-entrypoint.…" 30 seconds ago Up 28 seconds 0.0.0.0:3334->80/tcp, :::3334->80/tcp nginx01

端口暴露概念:

配置文件:

[root@localhost ~]# docker exec -it nginx01 /bin/bash root@6cda01502b8b:/# whereis nginx nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx root@6cda01502b8b:/# cd /etc/nginx/ root@6cda01502b8b:/etc/nginx# ls conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params root@6cda01502b8b:/etc/nginx#

測試連接:

[root@localhost ~]# curl localhost:3334 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p><p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p> </body> </html>

完成

安裝vim
我們使用Nginx往往需要編寫配置文件,但是Nginx官方鏡像沒有安裝vim,需要我們手動進行安裝。使用以下命令進行安裝:

apt-get install vim

如果執行上述命令出現提示:

Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package vim

則需要先同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,這樣才能獲取到最新的軟件包。執行以下命令來更新:

apt-get update
更新完畢再安裝即可。我們修改了配置文件,只要重新啟動容器docker restart 容器id,改動就可以生效了。

解決vim在終端不能復制的問題:在vim 中輸入 :set mouse=r。

拓展:啟動項目并設置數據卷,為避免nginx因為修改配置文件導致的錯誤而無法啟動容器,我們可以通過cp命令覆蓋配置文件,但是設置數據卷會更為方便。啟動Nginx容器的同時設置數據卷的命令:

docker run --name my_nginx -d -p 80:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/log:/var/log/nginx -v /data/nginx/html:/usr/share/nginx/html nginx

參數說明:

第一個-v:掛載nginx的主配置文件,以方便在宿主機上直接修改容器的配置文件
第二個-v:掛載容器內nginx的日志,容器運行起來之后,可以直接在宿主機的這個目錄中查看nginx日志
第三個-v:掛載靜態頁面目錄

總結

以上是生活随笔為你收集整理的图形化管理工具Portaniner安 以及 Docker镜像详解(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。