【业务功能篇64】安装docker容器,在docker上安装mysql

docker教程:
https://www.runoob.com/docker/docker-tutorial.html

卸载docker

较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。

yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine



安装依赖

yum install -y yum-utils device-mapper-persistent-data lvm2 wget

yum-utils:yum包管理工具。提供一下yum相关的工具命令。

在新主机首次安装 Docker Engine-Community之前,需要设置Docker仓库,之后,您可以从仓库安装和更新 Docker。

设置仓库,需要安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

device mapper
Device Mapper 是 Linux2.6 内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。

LVM
LVM(Logical Volume Manager)逻辑卷管理。

它是对磁盘分区进行管理的一种机制,建立在硬盘和分区之上的一个逻辑层,用来提高磁盘管理的灵活性。通过LVM可将若干个磁盘分区连接为一个整块的卷组(Volume Group),形成一个存储池。可以在卷组上随意创建逻辑卷(Logical Volumes),并进一步在逻辑卷上创建文件系统,与直接使用物理存储在管理上相比,提供了更好灵活性。

device-mapper-persistent-data 和 lvm2
两者都是Device Mapper所需要的。

yum-utils: yum管理工具。提供了yum-config-manager.

device-mapper-persistent-data 和 lvm2 提供了磁盘管理相关的工具。

wget下载文件的工具。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RghF3zue-1692181372195)(02-docker.assets/image-20201011191505489.png)]

下载repo源文件

查看一下源文件。

就是一个yum源的配置文件夹,yum如果想能用, 必须放在/etc/yum.repos.d的文件夹下,才能生效,yum配置文件必须.repo结尾的


[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ll
总用量 32
-rw-r--r--. 1 root root 1664 1123 2018 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 1123 2018 CentOS-CR.repo
-rw-r--r--. 1 root root  649 1123 2018 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  314 1123 2018 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 1123 2018 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 1123 2018 CentOS-Sources.repo
-rw-r--r--. 1 root root 5701 1123 2018 CentOS-Vault.repo
[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
--2020-10-11 19:16:39--  https://download.docker.com/linux/centos/docker-ce.repo
正在解析主机 download.docker.com (download.docker.com)... 13.35.121.23, 13.35.121.111, 13.35.121.10, ...
正在连接 download.docker.com (download.docker.com)|13.35.121.23|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1919 (1.9K) [binary/octet-stream]
正在保存至: “/etc/yum.repos.d/docker-ce.repo”

100%[================================================================================================================================>] 1,919       7.30KB/s 用时 0.3s   

2020-10-11 19:16:41 (7.30 KB/s) - 已保存 “/etc/yum.repos.d/docker-ce.repo” [1919/1919])

[root@localhost yum.repos.d]# ll
总用量 36
-rw-r--r--. 1 root root 1664 1123 2018 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 1123 2018 CentOS-CR.repo
-rw-r--r--. 1 root root  649 1123 2018 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  314 1123 2018 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 1123 2018 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 1123 2018 CentOS-Sources.repo
-rw-r--r--. 1 root root 5701 1123 2018 CentOS-Vault.repo
-rw-r--r--. 1 root root 1919 107 12:36 docker-ce.repo
[root@localhost yum.repos.d]# 
上面有命令。

下载发行版repo文件,软件仓库,镜像源。


wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo

-o 下载 到某个文件   链接。

在linux下,repo文件都是存放在/etc/yum.repos.d文件夹之中的。repo文件即是我们常说的源文件(repositry匹配文件),在使专用yum命令的时候系属统会自动读取repo文件,然后去repositry获取软件

替换源

原来

[root@localhost yum.repos.d]# cat docker-ce.repo 
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://download.docker.com/linux/centos/$releasever/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://download.docker.com/linux/centos/$releasever/source/stable
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://download.docker.com/linux/centos/$releasever/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://download.docker.com/linux/centos/$releasever/source/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://download.docker.com/linux/centos/$releasever/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://download.docker.com/linux/centos/$releasever/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[root@localhost yum.repos.d]# 

官方的源速度太慢 把软件仓库地址替换为 TUNA

演示一下 sed:

[root@localhost /]# mkdir cpf
[root@localhost /]# cd cpf/
[root@localhost cpf]# ll
总用量 0
[root@localhost cpf]# vi 1.txt
[root@localhost cpf]# sed -i 's/d/89/' 1.txt 
[root@localhost cpf]# cat 1.txt 
89
89d
[root@localhost cpf]# vi 2.txt
[root@localhost cpf]# sed -i 's/d/89/g' 2.txt 
[root@localhost cpf]# cat 2.txt 
89
8989
[root@localhost cpf]# 

替换 源。



sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo

sed 全名为 stream editor,流编辑器,用程序的方式来编辑文本,功能相当的强大。

baseurl=https://download.docker.com                   /linux/centos/7/$basearch/stable
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/$basearch/stable


替换后

[root@localhost yum.repos.d]# cat docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/$releasever/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/$releasever/source/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/$releasever/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/$releasever/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/$releasever/source/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/$releasever/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/$releasever/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/$releasever/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg
[root@localhost yum.repos.d]# 

更像缓存信息

yum makecache就是把服务器的包信息下载到本地电脑缓存起来,fast快速缓存。

yum -y makecache fast

[root@localhost cpf]# yum -y makecache fast
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.huaweicloud.com
base                                                                                                                                               | 3.6 kB  00:00:00     
docker-ce-stable                                                                                                                                   | 3.5 kB  00:00:00     
extras                                                                                                                                             | 2.9 kB  00:00:00     
updates                                                                                                                                            | 2.9 kB  00:00:00     
(1/2): docker-ce-stable/7/x86_64/updateinfo                                                                                                        |   55 B  00:00:00     
(2/2): docker-ce-stable/7/x86_64/primary_db                                                                                                        |  46 kB  00:00:00     
元数据缓存已建立
[root@localhost cpf]# 

安装docker

docker和k8s版本对应???

安装前:测试docker命令:

[root@localhost yum.repos.d]# docker
-bash: docker: 未找到命令

安装


yum -y install docker-ce-18.09.9

安装后测试:

[root@localhost yum.repos.d]# docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
[root@localhost yum.repos.d]# 

启动docker


[root@localhost yum.repos.d]# systemctl start docker
[root@localhost yum.repos.d]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@localhost yum.repos.d]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost yum.repos.d]# 

配置国内镜像源,每台机器都执行。

tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

镜像加速地址。

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF

阿里云镜像加速器地址:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6CbKga62-1692181372196)(02-docker.assets/image-20201011202720344.png)]

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

查询一下 docker仓库地址。

C:\Users\CPF>ping registry.docker-cn.com

正在 Ping registry.docker-cn.com [106.14.52.175] 具有 32 字节的数据:
Control-C
^C
C:\Users\CPF>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-caeAuZgp-1692181372197)(02-docker.assets/image-20201011195631775.png)]

重载配置

systemctl

daemon-reload: 重新加载某个服务的配置文件,如果新安装了一个服务,归属于 systemctl 管理,要是新服务的服务程序配置文件生效,需重新加载。

systemctl daemon-reload

重启docker

systemctl restart docker

设置开机启动

如果开机启动,不成功。我们用这个设置。

 systemctl enable docker.service

测试docker

[root@localhost ~]# docker run --rm alpine echo 'hello 晁鹏飞'
Unable to find image 'alpine:latest' locally
latest: Pulling from library/alpine
df20fa9351a1: Pull complete 
Digest: sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321
Status: Downloaded newer image for alpine:latest
hello 晁鹏飞
[root@localhost ~]# 

小白到这里


导入导出镜像

导出:

docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3

导入:

docker load -i my_ubuntu_v3.tar

示例:

有镜像的机器:
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              latest              f796d3d2c195        3 weeks ago         647MB
alpine              latest              a24bb4013296        4 months ago        5.57MB
[root@localhost ~]# docker save -o tomcat.tar tomcat:latest
[root@localhost ~]# ll
总用量 644116
-rw-------. 1 root root      1248 920 14:44 anaconda-ks.cfg
-rw-------. 1 root root 659568128 1011 20:28 tomcat.tar
[root@localhost ~]# pwd
/root
[root@localhost ~]# scp tomcat.tar [email protected]:/root/
The authenticity of host '192.168.110.202 (192.168.110.202)' can't be established.
ECDSA key fingerprint is SHA256:vL1YghSCnXMBb99EpeDsWli1rQmSt3oPGvKe4QDfprw.
ECDSA key fingerprint is MD5:43:94:87:56:6f:bc:b6:fb:97:4f:a8:36:13:4d:ee:49.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.110.202' (ECDSA) to the list of known hosts.
[email protected]'s password: 
tomcat.tar                                                                                                                              100%  629MB  39.3MB/s   00:16    
[root@localhost ~]# 

无镜像的机器:
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
alpine              latest              a24bb4013296        4 months ago        5.57MB
[root@localhost ~]# ll
总用量 644116
-rw-------. 1 root root      1248 920 14:44 anaconda-ks.cfg
-rw-------. 1 root root 659568128 1011 20:29 tomcat.tar
[root@localhost ~]# docker load -i tomcat.tar 
4ef54afed780: Loading layer [==================================================>]  119.2MB/119.2MB
6add0d2b5482: Loading layer [==================================================>]   17.1MB/17.1MB
d37096232ed8: Loading layer [==================================================>]  17.85MB/17.85MB
17bdf5e22660: Loading layer [==================================================>]    150MB/150MB
df95ed2a791d: Loading layer [==================================================>]  11.52MB/11.52MB
4f17d163126f: Loading layer [==================================================>]  3.584kB/3.584kB
8b185d674aef: Loading layer [==================================================>]  323.2MB/323.2MB
eb6e8fe5c6dc: Loading layer [==================================================>]   2.56kB/2.56kB
1485ce09f585: Loading layer [==================================================>]  20.57MB/20.57MB
b654a29de9ee: Loading layer [==================================================>]  2.048kB/2.048kB
Loaded image: tomcat:latest
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              latest              f796d3d2c195        3 weeks ago         647MB
alpine              latest              a24bb4013296        4 months ago        5.57MB
[root@localhost ~]# 

订单

[root@localhost /]# cat /etc/hosts
#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.110.126 	k8s01
192.168.110.4 		k8s02
192.168.110.208 	k8s03
[root@localhost /]# 

安装数据库

  1. 安装docker。参考我的docker安装文档。

  2. 拉取镜像。

    拉取镜像:
    docker pull mysql:5.7
    
  3. 在本地创建目录(存放数据库文件)

    容器中的文件,映射到宿主机。

    mkdir -p /root/mysql/data /root/mysql/logs /root/mysql/conf
    
  4. 创建*.cnf

    在/root/mysql/conf中创建 *.cnf 文件(叫什么都行)
    touch my.cnf
    
  5. 启动docker

    docker run -p 3306:3306 --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
    

    数据库就创建好了。后续。

    docker start mysql
    

    PS:大公司,数据库不用你管。ip,用户名。

    PS:开发要懂:运维,测试,DBA。

创建数据库

CREATE TABLE `ums_member` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `username` varchar(64) DEFAULT NULL,
  `password` varchar(64) DEFAULT NULL,
  `icon` varchar(500) DEFAULT NULL COMMENT '头像',
  `email` varchar(100) DEFAULT NULL COMMENT '邮箱',
  `nick_name` varchar(200) DEFAULT NULL COMMENT '昵称',
  `note` varchar(500) DEFAULT NULL COMMENT '备注信息',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
  `status` int(1) DEFAULT '1' COMMENT '帐号启用状态:0->禁用;1->启用',
  PRIMARY KEY (`id`),
  UNIQUE KEY `un_name` (`username`) USING BTREE COMMENT '用户名唯一'
) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8 COMMENT='后台用户表';


lombok

安装插件:lombok

引入jar包:参考代码仓库中的xml

代码仓库:

https://gitee.com/cpf100/msb-dongbao-mall

mybatis-plus地址

https://baomidou.com/guide/generator.html

代码生成完成

测试用例

测试代码生成器,生成的代码,是否运行正确。

数据库时间问题。

  1. 容器中
查询docker进程。
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
ab8bcc896217        mysql:5.7           "docker-entrypoint.s…"   12 days ago         Up 7 hours          0.0.0.0:3306->3306/tcp, 33060/tcp   mysql
[root@localhost ~]# 

进入容器,执行bash,用linux命令操作里面的任何东西
[root@localhost ~]# docker exec -it mysql bash

docker里
root@ab8bcc896217:/# 
将时区改成日本
root@ab8bcc896217:/# cp /usr/share/zoneinfo/Japan /etc/localtime 
退出容器
root@ab8bcc896217:/# exit
exit
docker外。

重启docker mysql
[root@localhost ~]# docker restart mysql
mysql
[root@localhost ~]# 


​ 2. 本地机器没有和ntp同步。

如果本机没有需要安装一下。
yum install ntp

同步时间
ntpdate time.nist.gov

  1. 链接问题。

    jdbc链接后面有一个时间设置。serverTimezone=Asia/Shanghai

你可能感兴趣的:(业务场景实例问题,Spring,boot,docker,mysql)