图形化管理工具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 分層理解
我們下載鏡像的時候 可以看到是一層一層的在下載的
這里指示了分層信息:
"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 ~]# 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镜像详解(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CIO40: 2020年IT人员如何借机
- 下一篇: PCL安装和环境配置