Docker容器与虚拟化技术:kylin 部署 docker容器应用

目录

  一、实验

1.环境

2. kylin 部署 docker及版本升级

3.kylin 部署docker镜像加速

4.kylin 部署 nginx容器应用

5.kylin使用docker容器部署mysql实现数据持久化

6.kylin使用docker容器部署nginx实现配置文件持久化到本地

7.kylin 使⽤ docker 部署容器可视化平台portainer

8.kylin 使⽤ docker 容器部署 Syncthing实现多平台文件同步

二、问题

1.docker安装报错

2.docker-compose 运行报错


  一、实验

1.环境

(1)主机

表1  主机

主机架构版本IP备注
kylin银河麒麟V10192.168.204.77 

docker20.10.13
portainer2.11.0
docker-composev2.24.6
syncthingv1.18.5

(2)查看内核

麒麟4.X版本相当于 CentOS 8 ,麒麟3.X版本相当于 CentOS 7 

[root@kylin ~]# uname -r

2. kylin 部署 docker及版本升级

(1)安装

[root@kylin opt]# dnf install docker-ce

(2)启动服务

[root@kylin ~]# systemctl start docker
[root@kylin ~]# ps -elf | grep docker

(3)查看版本

[root@kylin ~]# docker version

(4)查看已安装软件

[root@kylin ~]# rpm -qa | grep docker

(5)升级docker引擎到新版本

下载社区版二进制文件

Index of linux/static/stable/ (docker.com)

最新版本为25.0.3,选择一个稳定版本20.10.13

https://download.docker.com/linux/static/stable/x86_64/docker-20.10.13.tgz

(6)关闭docker服务

[root@kylin ~]# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:docker.socket
[root@kylin ~]# systemctl stop docker.socket

(7)卸载

[root@kylin ~]# dnf remove docker-ce*

(8)下载

[root@kylin ~]# cd /opt
[root@kylin opt]# wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.13.tgz
--2024-02-20 02:47:38--  https://download.docker.com/linux/static/stable/x86_64/docker-20.10.13.tgz
正在解析主机 download.docker.com (download.docker.com)... 13.32.121.29, 13.32.121.35, 13.32.121.78, ...
正在连接 download.docker.com (download.docker.com)|13.32.121.29|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:64275239 (61M) [application/x-tar]
正在保存至: “docker-20.10.13.tgz”docker-20.10.13.tgz                                 100%[================================================================================================================>]  61.30M  1.76MB/s  用时 36s     2024-02-20 02:48:15 (1.69 MB/s) - 已保存 “docker-20.10.13.tgz” [64275239/64275239])

(9)解压

[root@kylin opt]# tar -zxvf docker-20.10.13.tgz 

(10)查看

[root@kylin opt]# cd docker
[root@kylin docker]# ll[root@kylin docker]# ./docker version

(11)复制

[root@kylin docker]# cd /usr/local/bin/
[root@kylin bin]# ll

(12)配置docke服务

[root@kylin ~]# vim /usr/lib/systemd/system/docker.service

 [Unit]Description=Docker Application Container EngineDocumentation=https://docs.docker.comAfter=network-online.target firewalld.service time-set.targetWants=network-online.target[Service]Type=notifyExecStart=/usr/local/bin/dockerdExecReload=/bin/kill -s HUP $MAINPIDTimeoutStartSec=0RestartSec=2Restart=alwaysStartLimitBurst=3StartLimitInterval=60sLimitNOFILE=infinityLimitNPROC=infinityLimitCORE=infinityTasksMax=infinityDelegate=yesKillMode=processOOMScoreAdjust=-500[Install]WantedBy=multi-user.target

(13)重载服务

[root@kylin ~]# systemctl daemon-reload

(14)启动服务

[root@kylin ~]# systemctl start docker

[root@kylin ~]# ps -ef |grep docker

(15)查看版本

[root@kylin ~]# docker version

(16)测试

[root@kylin ~]# docker run hello-world

(17)查看镜像

[root@kylin ~]# docker images

3.kylin 部署docker镜像加速

(1)阿里云镜像加速

Docker 镜像加速器-阿里云开发者社区 (aliyun.com)

(2)配置文件

[root@kylin ~]#  vim /etc/docker/daemon.json

XXX 修改为⾃⼰的加速地址即可

{"registry-mirrors": ["https://XXX.mirror.aliyuncs.com"]
}
~   

(3)重启

[root@kylin ~]#  systemctl restart docker

(4)开机自启

[root@kylin ~]# systemctl enable docker 

4.kylin 部署 nginx容器应用

(1)运行

容器的80端口映射到宿主机的8000端口

[root@kylin ~]# docker run -itd -p 8000:80 nginx:latest

(2)查看进程

[root@kylin ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                   NAMES
fafbf60337d2   nginx:latest   "/docker-entrypoint.…"   5 seconds ago   Up 4 seconds   0.0.0.0:8000->80/tcp, :::8000->80/tcp   reverent_raman

(3) 访问

http://192.168.204.77:8000/

(4)关闭容器

[root@kylin ~]# docker stop fafbf60337d2 [root@kylin ~]# docker ps

(5) 查看所有容器id

[root@kylin ~]# docker   ps  -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
fafbf60337d2   nginx:latest   "/docker-entrypoint.…"   9 minutes ago    Exited (0) 2 minutes ago              reverent_raman
bc5d30d9e3a6   hello-world    "/hello"                 26 minutes ago   Exited (0) 26 minutes ago             fervent_morse

(6) 再次启动容器

[root@kylin ~]# docker start fafbf60337d2[root@kylin ~]# docker ps

(7)强制删除

[root@kylin ~]# docker rm -f fafbf60337d2[root@kylin ~]# docker ps -a

[root@kylin ~]# docker rm -f bc5d30d9e3a6[root@kylin ~]# docker ps -a

5.kylin使用docker容器部署mysql实现数据持久化

(1)拉取mysql镜像

[root@kylin ~]# docker pull mysql:8.0.32

(2)查看镜像

[root@kylin ~]# docker images

(3)运行

-v 宿主机与容器进行文件或目录的交互

-e 容器启动时给容器传一些变量信息

[root@kylin ~]# docker run -itd -p 3307:3306 --name mysql-server --restart unless-stopped -v /etc/localtime:/etc/localtime -v /dockerdata/mysqldata/db:/var/lib/mysql -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" mysql:8.0.32 --default-authentication-plugin=mysql_native_password --character-set-server=utf8 --collation-server=utf8_bin[root@kylin ~]# docker ps 

(4)查看生成的目录

[root@kylin ~]# cd /dockerdata/mysqldata/db
[root@kylin db]# ls[root@kylin db]# cd mysql/
[root@kylin mysql]# ls
[root@kylin mysql]# ll

(5) 查看日志

[root@kylin db]# docker logs 13f726c5f089

(6)删除容器

[root@kylin db]# docker rm -f 13f726c5f089

(7)查看持久化目录

[root@kylin db]# cd /dockerdata/mysqldata/db
[root@kylin db]# ls

(8)再次运行

[root@kylin db]# docker run -itd -p 3307:3306 --name mysql-server --restart unless-stopped -v /etc/localtime:/etc/localtime -v /dockerdata/mysqldata/db:/var/lib/mysql -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" mysql:8.0.32 --default-authentication-plugin=mysql_native_password --character-set-server=utf8 --collation-server=utf8_bin[root@kylin db]# docker ps

(9)查看日志

服务很快起来,不用做数据初始化

[root@kylin db]# docker logs ab3333e51e93 

6.kylin使用docker容器部署nginx实现配置文件持久化到本地

(1) 查看数据卷

[root@kylin ~]# docker volume ls

(2)创建数据卷

[root@kylin ~]# docker volume create nginx-vol[root@kylin ~]# docker volume ls

(3)挂在卷

把/etc/nginx 挂载到 数据卷nginx-vol

[root@kylin ~]#  docker run -itd -p 8060:80 --mount source=nginx-vol,target=/etc/nginx nginx:latest[root@kylin ~]# docker ps

(4) 访问

http://192.168.204.77:8060/

(5)过滤卷名称

[root@kylin ~]# docker inspect 02866cb8314e | grep nginx-vol

查看

[root@kylin ~]# cd /var/lib/docker/volumes/nginx-vol/_data
[root@kylin _data]# ll

(6)修改nginx配置文件

[root@kylin _data]# vim nginx.conf 

修改前:

修改后:

(7)查看

目前容器起来的nginx进程为8个

[root@kylin _data]# ps -ef |grep nginx
……
101        76763   76704  0 04:30 ?        00:00:00 nginx: worker process
101        76764   76704  0 04:30 ?        00:00:00 nginx: worker process
101        76765   76704  0 04:30 ?        00:00:00 nginx: worker process
101        76766   76704  0 04:30 ?        00:00:00 nginx: worker process
101        76767   76704  0 04:30 ?        00:00:00 nginx: worker process
101        76768   76704  0 04:30 ?        00:00:00 nginx: worker process
101        76769   76704  0 04:30 ?        00:00:00 nginx: worker process
101        76770   76704  0 04:30 ?        00:00:00 nginx: worker process

(8)重启容器

[root@kylin _data]# docker restart 02866cb8314e 

目前容器起来的nginx进程为2个

[root@kylin _data]# ps -ef |grep nginx
……
101        77311   77257  0 04:52 ?        00:00:00 nginx: worker process
101        77312   77257  0 04:52 ?        00:00:00 nginx: worker process

7.kylin 使⽤ docker 部署容器可视化平台portainer

(1) 官方地址

https://hub.docker.com/r/portainer/portainer-ce

(2) 下载汉化包

https://github.com/eysp/public/releases/tag/public

(3)拉取镜像

[root@kylin portainer]# docker pull portainer/portainer-ce:latest[root@kylin portainer]# docker images

(4)解压汉化包

创建目录

[root@kylin _data]# cd /data
[root@kylin data]# mkdir portainer
[root@kylin data]# cd portainer/

[root@kylin portainer]# tar -zvxf public-public.tar.gz[root@kylin portainer]# mv public-public public[root@kylin portainer]# ls

(5)创建数据卷

[root@kylin portainer]# docker volume create portainer_data[root@kylin portainer]# docker volume ls

(6)运行

-name :指定容器名称

-p : 容器端⼝映射到宿主机的端⼝

-v : 将主机⽬录挂载到容器的⽬录

-d :让容器在后台运⾏

docker run -d --restart=always \
--name="portainer" \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
-v /data/portainer/public:/public  \
portainer/portainer-ce:latest

(7) 查看

[root@kylin portainer]# docker ps |grep portainer
bed407a8a728   portainer/portainer-ce:latest   "/portainer"             47 seconds ago      Up 46 seconds      8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   portainer

(8) 登录

http://192.168.204.77:9000

(9)创建用户

(10)进入系统

(11)开始

(12)首页

(13)查看仪表盘

(14)容器列表

(15)查看portainer日志

(16)容器portainer统计

(17)mysql控制台

连接

执行到容器中

(18) 镜像

删除

查看

拉取镜像

查看

(19)网络

(20)存储卷

(21)终端Endpoints

8.kylin 使⽤ docker 容器部署 Syncthing实现多平台文件同步

(1) 下载docker-compose

https://github.com/docker/compose/releases

(2) 安装 docker-compose

上传下载好的离线包至服务器

#修改上传的文件名为docker-compose,并移动至/usr/bin/目录下
[root@kylin opt]# mv docker-compose-linux-x86_64 docker-compose
[root@kylin opt]# mv docker-compose /usr/bin/#添加可执行权限
chmod +x /usr/bin/docker-compose

(3)验证

查看版本

docker-compose -v

(4) 创建目录

[root@kylin ~]# mkdir -p /data/docker_data/syncthing
[root@kylin ~]#  cd /data/docker_data/syncthing

(5)创建yml文件

[root@kylin ~]#  cd /data/docker_data/syncthing
[root@kylin syncthing]# vim docker-compose.yml

version: "2.1"services:syncthing:image: linuxserver/syncthingcontainer_name: syncthinghostname: syncthing #optionalenvironment:- PUID=1000- PGID=1000- TZ=Asia/Shanghaivolumes:- /data/docker_data/syncthing/config:/config- /data/docker_data/syncthing/Documents:/Documents- /data/docker_data/syncthing/Media:/Mediaports:- 8384:8384- 22000:22000/tcp- 22000:22000/udp- 21027:21027/udprestart: unless-stopped

(6)拉取镜像

[root@kylin syncthing]# docker pull linuxserver/syncthing

(7)运行docker-compose

[root@kylin syncthing]# docker-compose up -d

(8) 查看进程

[root@kylin syncthing]# docker ps | grep syncthing
b6b7ddeb6765   linuxserver/syncthing           "/init"                  4 minutes ago       Up 4 minutes       0.0.0.0:8384->8384/tcp, 0.0.0.0:21027->21027/udp, :::8384->8384/tcp, :::21027->21027/udp, 0.0.0.0:22000->22000/tcp, :::22000->22000/tcp, 0.0.0.0:22000->22000/udp, :::22000->22000/udp   syncthing

(9) 访问

http://192.168.204.77:8384/

弹出提示框

进入界面

(10)设置

(12) 登录

(13)添加文件夹

(14)查看目录

[root@kylin syncthing]# ll

(15)授权

让docker容器也能操作Documents和Media目录

[root@kylin syncthing]# chown 1000:1000 Documents
[root@kylin syncthing]# chown 1000:1000 Media[root@kylin syncthing]# ll

(16)修改指定的容器目录

高级

类型

修改

(17)查看共享目录

(18)查看 Syncthing的Windows版本

https://github.com/syncthing/syncthing/releases

目前最新版为v1.27.3

(19)下载稳定版

https://github.com/syncthing/syncthing/releases/tag/v1.18.5

选择稳定版下载

(20) Windows以管理员身份运行

(21) Windows访问

http://127.0.0.1:8384/

弹出提示框

进入界面

设置

设置用户及密码

登录

(22)Windows显示id

查看id

(23) Linux 添加远程设备

添加

共享

(24)Windows 确认同步请求

添加设备

保存

添加

保存

共享

高级-修改文件夹类型

查看

目前目录为空

(25)Linux 同步完成

(26)Windows放入文件

(27)Linux 查看已更新

查看容器挂载目录

[root@kylin Documents]# ls
3vjxj-jicgj
[root@kylin Documents]# ll
总用量 0
drwxr-xr-x 3 dmdba dinstall 66  2月 20 07:54 3vjxj-jicgj
[root@kylin Documents]# cd 3vjxj-jicgj/
[root@kylin 3vjxj-jicgj]# ll
总用量 9596
-rw-r--r-- 1 dmdba dinstall 9825222  2月 22  2024 syncthing-windows-amd64-v1.18.5.zip
[root@kylin 3vjxj-jicgj]# 

删除

[root@kylin 3vjxj-jicgj]# rm -rf syncthing-windows-amd64-v1.18.5.zip 

(28)Windows查看文件

文件未删除

二、问题

1.docker安装报错

(1)报错

(2)原因分析

/containerd.io-1.6.4-1.p01.ky10.x86_64.rpm 下载失败

(3)解决方法

查看仓库

Index of /NS/V10/V10SP3/EPKL/x86_64/Packages/ (cs2c.com.cn)

下载

[root@kylin opt]# wget https://update.cs2c.com.cn/NS/V10/V10SP3/EPKL/x86_64/Packages/docker-ce-19.03-15.ky10.x86_64.rpm

安装

[root@kylin opt]# dnf install docker-ce

2.docker-compose 运行报错

(1)报错

[root@kylin syncthing]# docker-compose up -d
yaml: line 1: did not find expected key

(2)原因分析

yml文件格式错误

(3)解决方法

yml文件验证格式

YAMLlint - The YAML Validator

修改配置文件

[root@kylin syncthing]# vim docker-compose.yml 

修改前:

修改后:

成功:

[root@kylin syncthing]# docker-compose up -d

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/485096.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文解读】Uncertainty Quantification of Collaborative Detection for Self-Driving

Uncertainty Quantification of Collaborative Detection for Self-Driving 摘要引言方法问题定义方法概览Double-M 实验结论 摘要 在联网和自动驾驶汽车(CAVs)之间共享信息从根本上提高了自动驾驶协同目标检测的性能。然而,由于实际挑战,CAV 在目标检测…

【LeetCode: 106. 从中序与后序遍历序列构造二叉树 + DFS】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

shell脚本实现Mysql分库分表备份

一.数据库的分库分表? 12张图把分库分表讲的明明白白!阿里面试:我们为什么要分库分表https://mp.weixin.qq.com/s?__bizMzU0OTE4MzYzMw&mid2247547792&idx2&sn91a10823ceab0cb9db26e22783343deb&chksmfbb1b26eccc63b784879…

UIKit 在 UICollectionView 中拖放交换 Cell 视图的极简实现

概览 UIKit 中的 UICollectionView 视图是我们显示多列集合数据的不二选择,而丰富多彩的交互操作更是我们选择 UICollectionView 视图的另一个重要原因。 如上图所示:我们实现了在 UICollectionView 中拖放交换任意两个 Cell 子视图的功能,这…

PYQT5-自定义事件

from PyQt5.QtCore import QEvent, QObject from PyQt5.QtWidgets import QApplication import sys# 自定义事件类 class CustomEvent(QEvent):# PYQT5 预留给用户自定义事件类型的起点为 QEvent.User1000custom_event_type QEvent.registerEventType()# 也可以这样写# custom…

OpenCV人脸检测案例实战

人脸检测是一种计算机视觉技术,旨在识别图像或视频中的人脸。这项技术的基本内容包括使用特定的算法和模型来定位和识别人脸,通常涉及在图像中寻找面部特征,如眼睛、鼻子、嘴巴等,以便准确地确定人脸的位置和边界。人脸检测技术的…

【青龙】快速搭建青龙面板,部署属于你自己的应用!

青龙面板是一个支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台。 废话不多说,直接开始。 这里使用一台 雨云 的云服务器作为演示。雨云注册地址:https://www.rainyun.com/ 优惠码:lz932 使用优惠码注册后绑定微信可获得8折…

蓝桥杯:C++模运算、快速幂

模运算 模运算是大数运算中的常用操作。如果一个数太大,无法直接输出,或者不需要直接输出,则可以对它取模,缩小数值再输出。取模可以防止溢出,这是常见的操作。 模是英文mod的音译,取模实际上是求余。 取…

基于SpringBoot的在线拍卖系统设计与实现(源码+调试+LW+PPT)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于SpringBoot的在线拍…

SQL Server —— While语句循环

一:简介 while 循环是有条件的循环控制语句。满足条件后,再执行循环体中的SQL语句。 while: break, 如果有多条语句可以在while后面添加begin-end。关于while的语法 while(条件) -- begin -- 语句1 -- 语句2 -- break 根据情况是否添加break -- end 二…

QT基本组件

四、基本组件 Designer 设计师(重点) Qt包含了一个Designer程序,用于通过可视化界面设计开发界面,保存文件格式为.ui(界面文件)。界面文件内部使用xml语法的标签式语言。 在Qt Creator中创建文件时&#xf…

学习JAVA的第三天(基础)

目录 流程控制语句 顺序结构 分支结构 循环结构 分类: 练习 跳转控制语句 练习 数组 数组介绍 数组的定义和静态初始化 数组定义 数组的静态初始化 数组元素访问 数组遍历 数组动态初始化 JAVA内存分配 流程控制语句 顺序结构 是Java程序默认的执行流程…