欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > docker基础入门于应用的实践

docker基础入门于应用的实践

2025/6/21 11:03:13 来源:https://blog.csdn.net/2403_89688685/article/details/148800047  浏览:    关键词: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反向代理区完成,但是这样会很麻烦。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词