文章目录

  • 图形化管理工具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镜像详解(三)相关推荐

  1. 【Docker学习笔记 三】Docker常用容器安装及图形化管理工具

    上一篇Blog详细介绍了如何在CentOS上进行Docker的安装.卸载以及如何进行镜像加速,了解了Docker大致的运行流程以及常用的命令.时隔半个月之后,度过了过节失落期后再次拾起来自己的年度计划 ...

  2. Docker图形化管理工具之Portainer

    What is Portainer? Portainer是一款轻量级的图形化管理工具,通过它我们可以轻松管理不同的docker环境.Portainer部署和使用都非常的简单,它由一个可以运行在任何do ...

  3. Git图形化管理工具

    Git图形化管理工具 注意:必须在创建的仓库中进行右键打开 复制这段内容后打开百度网盘App,操作更方便哦. 链接:https://pan.baidu.com/s/1eXIk01LXSmzmXvYfw ...

  4. win10下最新MySQL8.0安装与环境配置,Navicat图形化管理工具连接,完整详细可收藏

    文章目录 一.MySQL的卸载 二.MySQL的下载安装和配置 三.MySQL的开启和登录 四.MySQL图形化管理工具 一.MySQL的卸载 步骤1:停止MySQL服务 在卸载之前,先停止MySQL ...

  5. MySQL运算符,函数,索引,图形化管理工具

    文章目录 运算符 算术运算符 比较运算符 逻辑运算符 MySQL运算符 数字函数 字符串函数 日期时间函数 条件函数 系统信息函数 加密函数 其他常用函数 MySQL索引 索引的概念 索引的分类 创建 ...

  6. Oracle图形化管理工具——OEM

    Oracle图形化管理工具--OEM 在工作中 由于切换数据库服务器 ,由于服务器性能较低,想着调整sql,这时候就考虑使用oracle 管理工具来监控sql 参考博客: https://blog.c ...

  7. kafka图形化管理工具kafka-manager

    本文来说下kafka图形化管理工具kafka-manager 文章目录 概述 概述

  8. Memcache图形化管理工具MemAdmin

    1.美图 2.概述 下面给大家介绍一款 memcache图形化管理工具: MemAdmin 下载地址: http://www.junopen.com/memadmin/ MemAdmin是一款可视化的 ...

  9. linux sqlite图形工具,SQLite 图形化管理工具

    哈哈,朋友编写了一款服务器web界面管理工具,使用到了SQLite数据库. SQLite介绍 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已 ...

最新文章

  1. 华为云客户端_从技术角度解读华为云手机之于普通用户的可行性
  2. flume自定义Interceptor
  3. 在win8上配置网站服务器,win8怎么配置web服务器地址
  4. bspline怎么使用 python_资源分享:微软官方的Python入门教程
  5. disconf mysql_Docker搭建disconf环境,三部曲之三:细说搭建过程
  6. 2018 A Sparse Topic Model for Extracting Aspect-Specific Summaries from Online Reviews 稀疏主题模型学习笔记
  7. 变态的儿童国学教育与孔子真正的教育之道
  8. deepin安装zsh以及简单配置
  9. oracle中的rownum
  10. 法语:世界上最有辨识度的语言
  11. 连接主机Java网络编程(一)- 一个简单的服务端/客户端应用程序
  12. 河南理工大学计算机科学与技术怎么样,河南理工大学计算机科学与技术怎么样...
  13. WIN7(32位)VS2010+openCV 2.4.10+PCL 1.6.0+CUDA 6.5.14+CMake 3.2.1+SSBA-3.0配置
  14. MG513P30 12V直流减速电机编码器电线与杜邦线焊接教程
  15. 中文编程从入门到精通中文编程语言教学视频
  16. maya绳子建模(包含插件)
  17. 数学笔记27——极坐标下的面积
  18. 1]解决java.util.concurrent.RejectedExecutionException
  19. 移动端基于Vant组件封装底部弹出搜索多选列表
  20. ACM训练方法_该我自己检讨了_By LCY

热门文章

  1. html5 苹果 dock,基于JQuery模仿苹果桌面的Dock效果(初级版)
  2. python- selenium-快眼看书-林深终有路
  3. 国子监祭酒是个什么官
  4. 华为机试(JAVA)真题Od【A卷+B卷】
  5. 喝豆浆对身体都有哪些好处?
  6. html中日期下拉选怎么设置,html中option标签(下拉列表选项)的详细介绍
  7. 纯CSS实现图片百叶窗展示效果
  8. 计算机术语横幅迎新,内蒙古师范大学用代码写迎新条幅,还有哪些搞笑的迎新标语?...
  9. 立个铁矿石的flag,从7月初开始,铁矿石的库存,可能要进入累库存阶段了.
  10. 数据链路层(帧)(二)