目录

  一、实验

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.X ,麒麟3.X版本相当于 CentOS 7.X 

[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

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐