当前位置: 首页 > news >正文

docker基础入门于应用的实践

docker基础入门于应用的实践

  1. docker基础和基本概念
  2. 安装Docker于加速器
  3. docker中镜像,容器和仓库
  4. docker基础操作命令
  5. Docker数据管理
  6. Docker 的网络于容器互联
  7. 通过docker应用和部署应用系统的流程
  8. 基于docker容器运桌面案例
  9. docker容器下部署zabbix监控案例
  10. docker可视化容器管理工具Portainer

1. docker基础与基本概念

在这里插入图片描述

简单来说,docker理念是打包镜像以及依赖环境到一个可移植的容器中,然后发布到任何的平台的主机上(Linux.windows,macos)上都能运行。

要记住这句话

  1. build,ship,and run 即搭建,发送,运行
  2. build once , run anywhere 一次构建到处运行

2.安装docker和配置加速器

一下命令可以写成一个shell脚本执行

、使用yum在线安装Docker CE,执行以下命令安装依赖包:
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
执行下面的命令添加yum软件源:
[root@localhost ~]# yum-config-manager --add-repo yum-config-manager --add-repo https://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo
最后,可以安装Docker CE了。
[root@localhost ~]# yum makecache fast
[root@localhost ~]# yum install docker-ce
最后,启动 Docker CE:
[root@localhost ~]# systemctl enable docker
[root@localhost ~]# systemctl start docker

安装Docker与加速器配置

[root@docker-110 docker]# ls
daemon.json# 这是我在华为云中添加的加速器
[root@docker-110 docker]# cat daemon.json 
{"registry-mirrors": [ "https://58698f75ac8e4e98bbb253a7e9b31657.mirror.swr.myhuaweicloud.com" ]
}# 最后测试hello-world 
[root@docker-110 docker]# docker run hello-world Hello from Docker!

3.docker 镜像,容器和仓库

在这里插入图片描述

docker镜像

1. 镜像是一层一层的构建起来的
2. 镜像的内容是不可修改的。(只读`)

docker容器

docker 镜像和容器,容器是运行镜像产生的。

docker仓库

即为我们下载镜像的仓库,也可提交为镜像。

4.docker基础命令

docker pull nginx:1.20.2
1.20.2: Pulling from library/nginx
a5a6f2f73cd8: Pull complete 
1a32bfb24a51: Pull complete 
b30849834152: Pull complete 
Digest: sha256:29e21925ac52b4ffb748eabb2438ec06f4b1ce8b5ae92c7c13548907b51a78bd
Status: Downloaded newer image for nginx:1.20.2pull 后面你不加上版本,默认就是最新版本latest

运行镜像

docker run -it --rm centos:7.9.0 bash -t 一个虚拟的终端
-i 一个交互式的容器--rm 退出就删除记录

列出镜像

[root@docker-110 docker]# docker images
REPOSITORY                      TAG        IMAGE ID       CREATED         SIZE
npm-js                          latest     4e16243ce30e   47 hours ago    917MB
flask-redis                     latest     3b2972d5ba4d   3 days ago      627MB
my-flask-redis                  latest     aa7445cb59e4   7 days ago      934MB
t1-flask-redis                  latest     e534ffc23b36   9 days ago      627MB
t1-curl                         latest     74c3e66b78a5   9 days ago      204MB
zabbix/zabbix-web-nginx-mysql   latest     de0134fe026a   2 weeks ago     271MB
zabbix/zabbix-server-mysql      latest     2aa44919a302   2 weeks ago     105MB
zabbix/zabbix-agent             latest     ad17a7804c01   2 weeks ago     20.3MB
redis                           <none>     860da63e75fb   3 weeks ago     128MB
redis                           latest     c09c2832ba40   3 

进入容器

[root@localhost home]# docker exec -it 6960255dc75b bash 1.这里可以用前三个id
2. 也可以用整个id号
3. 也可用容器的名字

5.Docker数据管理

# 我这里一般使用的-v的参数

-v 宿主机目录:容器目录

  1. 如果宿主机映射目录有东西容器就用宿主机目录
  2. 如果宿主机目录没东西,容器的目录就映射到宿主机上。

Volumes方式下:容器内的数据被存放到宿主机(linux)一个特定的目录下

(/var/lib/docker/volumes/)。这个目录只有Docker可以管理,其他进程不能修改。如果想持久保存容

器的应用数据,Volumes是Docker推荐的挂载方式

使用挂载主机目录覆盖规则

  • 如果指定的主机目录为空,同时容器中的非空目录是Dockerfile中使用VOLUME命令声明过的,则容器文件会被复制到宿主机上。
  • 只要宿主机目录不为空,则一定会覆盖容器内的目录

6, Docker的网络与容器互联

外部访问容器

  • 容器中可以运行的网络应用,可以通过 -P 或者 -P
  • -P 会会随机的暴露一个3000以上的端口
  • -p是 80:80 是指定的暴露端口、

容器的互相网络联系

容器之间Docker的使用经验。用–link进行相关联,

--link 后面一定是容器的名字

创建一个docker的网段

[root@docker-110 docker]# docker network create mynet1[root@docker-110 docker]# docker network ls
NETWORK ID     NAME                 DRIVER    SCOPE
8eabaa97d942   bridge               bridge    local
0db7cc002f15   host                 host      local
e5c6866dbfd1   linux0224-net1       bridge    local
b3ca5dd162d9   linux0224-net2       bridge    local
083af13e0742   my-flask-net         bridge    local
8dc381c16de0   mynet1               bridge    local
2038547e0c41   none                 null      local
8fe1487d0872   zabbix-all_default   bridge    local
72ec5c76f541   zabbix_network       bridge    local在运行镜像使用的话是--network 名字

7.通过docker部署应用程序系统

  1. docker容器使用流程

在这里插入图片描述

  1. 在实际环境中,容器,镜像,仓库之间的关系

在这里插入图片描述

8.基于docker的虚拟化云桌面案例

下载云镜像

docker pull swr.cn-north-1.myhuaweicloud.com/iivey/linux-desk:v1.0

命令式安装容器

docker run -itd --shm-size 4G -p 6080:6080 
-e VNC_PASSWD=admin123456 \   
-e GEOMETRY='1366x768' -e DEPTH=32 \    
-v /data3/Downloads:/root/Downloads \
-v /data3/Documents:/root/Documents \
-v /data3/Pictures:/root/Pictures \
-v /data3/Videos:/root/Videos \
-v /data3/Music:/root/Music \
-v /data3/Desktop:/root/Desktop \
--restart unless-stopped \
--name linuxdesk \
swr.cn-north-1.myhuaweicloud.com/iivey/linux-desk:v1.0

基于docker的云桌面就可以运行起来了,然后就可以通过浏览器访问linux云桌面的运行环境,可以进行办公,上网,游戏等等

在这里插入图片描述

9. docker容器下安装zabbix监控

先创建docker的网络

  • 启动zabbix镜像之前,需要创建一个新的Docker网络,后面需要zabbix-server,mysql , web等容器加入到此网络中,方便互相访问。
  1. docker启动mysql容器
docker pull mysql:8.0.23docker run -itd -p 3306:3306 --name zabbix-mysql \
--network zabbix_net \
--restart unless-stopped \
-v /etc/localtime:/etc/localtime \
-v /dockerdata/zabbix/db:/var/lib/mysql \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix123" \
-e MYSQL_ROOT_PASSWORD="root123" \
mysql:8.0.23 \
--default-authentication-plugin=mysql_native_password \
--character-set-server=utf8 \
--collation-server=utf8_bin
  1. 创建一个zabbix-java-gateway镜像
docker run -v /etc/localtime:/etc/localtime \
-dit --restart=always \
--name=zabbix-java-gateway \
--network zabbix_net \
zabbix/zabbix-java-gateway:centos-5.2.4
  1. 运行zabbix-server-mysql 镜像
docker pull zabbix-server-mysql docker run -dit -p 10051:10051 \
--mount source=zabbix-server-vol,target=/etc/zabbix \
-v /etc/localtime:/etc/localtime \
-v /usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
--name=zabbix-server-mysql \
--restart=always \
--network zabbix_net \
-e DB_SERVER_HOST="zabbix-mysql" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix123" \
-e MYSQL_ROOT_PASSWORD="root123" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
-e ZBX_JAVAGATEWAY_ENABLE="true" \
-e ZBX_JAVAGATEWAYPORT=10052 \
zabbix/zabbix-server-mysqll:centos-
5.2.4

4.运行zabbix-web-nginx-mysql 镜像

docker run -dit -p 8080:8080 \
-v /etc/localtime:/etc/localtime \
-v /data/dockershell/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf \
--name zabbix-web-nginx-mysql \
--restart=always \
--network zabbix_net \
-e DB_SERVER_HOST="zabbix-mysql" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix123" \
-e MYSQL_ROOT_PASSWORD="root123" \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
zabbix/zabbix-web-nginx-mysql:centos-5.2.4

5.运行zabbix-agent 镜像

docker run -dit --name zabbix-agent \
-p 10050:10050 \
--network zabbix_net \
-e ZBX_HOSTNAME="Zabbixserver" \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
-e ZBX_SERVER_PORT=10051 \
zabbix/zabbix-agent:centos-5.2.4

先给主机配置客户端

在这里插入图片描述

10.docker可视化工具portainer

  1. Portainer介绍

Portainer是一个可视化容器镜像的管理工具,利用Portainer可以轻松的构建,管理和维护Docker环境,它可以与Docker,DockerSwam, K8s 和无服务器环境吗,基于容器化安装,方便搞笑的部署。

官方网址:https://www.portainer.io/

参数的解释

--name  指定容器的名称
-p      容器端口映射到宿主机的端口
-v      将主机目录挂载到容器目录
-d      让容器在后台运行
docker run -d -p 9000:9000 \
--name portainer \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
swr.cn-north-1.myhuaweicloud.com/iivey/portainer-ce:2.19.1

在这里插入图片描述

最后总结一下

我一般部署的话,一般是不暴露端口用宿主机的nginx反向代理区完成,但是这样会很麻烦。

http://www.lryc.cn/news/573041.html

相关文章:

  • 让Agent的应用价值增长
  • mysql 执行计划 explain命令 详解
  • Agent轻松通-P3:分析我们的Agent
  • 详解Redis的内存淘汰策略
  • HCIP-华为VRP系统基础
  • Linux——库文件生成和使用
  • 软件架构的发展历程——从早期的单体架构到如今的云原生与智能架构
  • 初学python的我开始Leetcode题10-2
  • RPC常见问题回答
  • 【Go语言基础】对齐边界与内存填充
  • HTTP 请求方法与状态码
  • 深入解析:如何实时获取Socket接收缓冲区的数据量
  • Cesium、ThreeWebGL详解(二)渲染引擎向GPU传数据、性能优化、引擎对比
  • C++ 学习笔记精要(二)
  • mysql server层做了什么
  • Spring 的IoC 和 AOP
  • 博士,超28岁,出局!
  • 算法第38天|322.零钱兑换\139. 单词拆分
  • moments_object_model_3d这么理解
  • 信安实验室CTF writeup
  • 【Python进阶系列】第10篇:Python 项目的结构设计与目录规范 —— 从脚本到模块,从混乱到整洁
  • 电力企业数字化——解读44页电力集团战略实施和集团对标一体化指标体系框架【附全文阅读】
  • 计算机——硬盘驱动器
  • 【大模型lora微调】关于推理时如何使用 LoRA Adapter
  • 如何填写“appium inspector”内容?
  • 数据分析和可视化:Py爬虫-XPath解析章节要点总结
  • 第32周———Tensorflow|LSTM-火灾温度预测
  • HTML一键打包EXE串口API介绍
  • 智能群跃小助手发布说明
  • 【编译原理】语句的翻译