目录
一、实验
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 | 银河麒麟 | V10 | 192.168.204.77 | |
docker | 20.10.13 | |||
portainer | 2.11.0 | |||
docker-compose | v2.24.6 | |||
syncthing | v1.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 Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service time-set.target
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/local/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
OOMScoreAdjust=-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/syncthing
container_name: syncthing
hostname: syncthing #optional
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
volumes:
- /data/docker_data/syncthing/config:/config
- /data/docker_data/syncthing/Documents:/Documents
- /data/docker_data/syncthing/Media:/Media
ports:
- 8384:8384
- 22000:22000/tcp
- 22000:22000/udp
- 21027:21027/udp
restart: 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