docker 启动 sqlite Docker 启动失败_docker 启动 sqlite

以上报错:

解决:网上找了下,说是/etc/docker/daemon.json里的内容不对,我试了官网配置的阿里云配置都不行。目前文件内容如下:

 

继续用提示的命令看失败细节:

docker 启动 sqlite Docker 启动失败_IP_02

 

又baidu了下,说是xfs 版本不对,我用man mkfs.xfs 看了下help, 果然和他说的没有-m 选项,是太低了,

升级: yum update xfsprogs

启动docker: sudo symtemctl start docker.service

没有报错了。

看下docker 状态:

docker 启动 sqlite Docker 启动失败_docker 启动 sqlite_03

显示running了,good。

昨天晚上用官网搞了2个小时,就是下不下来。这下好,以后可以用清华大学的网站安装了。

可以看下我的加一遍文章,我转载过来了。

 

测试docker:

sudo docker run hello-world. 

发现慢得很啊。

解决: 从阿里云注册一个帐号,然后用自己的镜像加速器。

配置到/etc/docker/daemon.json中。

docker 启动 sqlite Docker 启动失败_docker 启动 sqlite_04

 

修改成aliyun的镜像后,快得飞起来,可能测试一下安装tomcat 容器试下:

01 创建tomcat容器
    docker pull tomcat
    docker run -d --name my-tomcat -p 9090:8080 tomcat
    
02 进入到容器里面
    docker exec -it {containerid} /bin/bash

03 用127.0.0.1:9090 访问tomcat 居然 访问不了:实际已经启动成功的:

docker 启动 sqlite Docker 启动失败_docker 启动 sqlite_05

 

04 继续分析:

目前 的情况 是centOS 上的docker0 ip 为172.17.0.1

tomcat04的IP 为172.17.0.2

tomcat05的IP为172.17.0.3。

tomcat04 可以ping tomcat05. tomcat04不能ping 172.17.0.1

docker 启动 sqlite Docker 启动失败_docker 启动 sqlite_06

docker 启动 sqlite Docker 启动失败_tomcat_07

目前的思路是:

1)。 用veth 技术手动配一对veth, 然后分一个给tomcat04 试下。

=》不可行, tomat04 的network namespace不知道。

2)。自己create 一个bridge 网络然后,在创建container的时候用我们自己创建的网络。

docker info 查看信息有2 个warning:

docker 启动 sqlite Docker 启动失败_docker_08

修改配置:

docker 启动 sqlite Docker 启动失败_docker 启动 sqlite_09

重启网络,重启docer.

[root@localhost docker]# systemctl restart network

[root@localhost docker]# 
[root@localhost docker]# 
[root@localhost docker]# service docker restart
Redirecting to /bin/systemctl restart docker.service
[root@localhost docker]# docker info
warning 消失。

 

再试下网络能不能通:

还是不行:

docker 启动 sqlite Docker 启动失败_IP_10

 

再查看网桥信息:yum instal bridge-utils 安装

docker 启动 sqlite Docker 启动失败_docker 启动 sqlite_11

发现bridge id 好像有点不对。

尝试自己新建一个bridge 试下:(先把docker 停了: service docker stop)

docker 启动 sqlite Docker 启动失败_IP_12

发现新建的bridge br0也是8000.0000000000, 这个肯定是有问题了,说明docker 自带的bridge是有问题的,

给br0 配上IP 再看下:

docker 启动 sqlite Docker 启动失败_docker 启动 sqlite_13

现在有IP了,尝试把这个设置为docker的默认网桥:

要/etc/docker/daemon.json中加入刚我们创建的br0 网桥。

重启docker:

docker 启动 sqlite Docker 启动失败_docker_14

看下网桥已经用的我们自定义的了:

docker 启动 sqlite Docker 启动失败_docker 启动 sqlite_15

创建一个tomcat 容器试下:

创建一个新的tomcat: tomcat-br0-1

并把8080 端口映射到主机8995 端口,

查看网桥br0 这时有了真正的bridge id.

然后从tomcat-br0-1 容器中可以看到Ip 为172.16.0.2, ping 主机上的ip 172.16.0.1 也可以ping通了。看来是解决了。

docker 启动 sqlite Docker 启动失败_tomcat_16

最后在window上访问centoOS的IP:8995 看能访问不:

docker 启动 sqlite Docker 启动失败_tomcat_17

Bingo !!!! 已经可以把tomcat的信息打印出来,解决了。折腾了2天终于可以向下走了。