使用docker搭建个人博客

  • 我docker分类中有使用的详细说明,想了解的可以去看看。

[root@ccx ~]# mkdir /data

[root@ccx ~]# docker run -dit --name=db --restart=always -v /data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=haha -e MYSQL_DATABASE=wordpress hub.c.163.com/library/mysql

91afdb4857d21319187ccf2832d6721c85c4ffc82eab375e4b888e686cbbaf2a

[root@ccx ~]#

  • 参数解释

  • /data:/var/lib/mysql:将容器中的数据分贝到本地/data目录中

  • -e MYSQL_ROOT_PASSWORD=haha: 容器的root密码

  • -e MYSQL_DATABASE=wordpress:创建一个wordpress数据库【自定义的名称】

  • 获取mysql容器IP,待会需要用

可以看到这个容器的ip是:172.17.0.2

[root@ccx ~]# docker inspect db | grep IPA

“SecondaryIPAddresses”: null,

“IPAddress”: “172.17.0.2”,

“IPAMConfig”: null,

“IPAddress”: “172.17.0.2”,

[root@ccx ~]#

创建wordpress容器

============================================================================

常规搭建


  • 注:创建这个需要开启防火墙:systemclt start firewalld

如果不开启防火墙,创建会报如下错误:

[root@ccx ~]# docker run -dit --name=blog --restart=always -v /blog:/var/www/html -p 80:80 -e WORDPRESS_DB_HOST=172.17.0.2 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=haha -e WORDPRESS_DB_NAME=wordpress hub.c.163.com/library/wordpress

783b36c5b95b0a1c59ade6d4a262c1026ff1acdd6e48f821fbcf25647056576e

/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint blog (a1b4c8d66e5a74c7fdddc78f7299b7168cab3c20ecc0fc3c83402040a9ba6186): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 80 -j DNAT --to-destination 172.17.0.3:80 ! -i docker0: iptables: No chain/target/match by that name.

(exit status 1)).

  • 创建成功如下

[root@ccx ~]# docker run -dit --name=blog --restart=always -v /blog:/var/www/html -p 80:80 -e WORDPRESS_DB_HOST=172.17.0.2 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=haha -e WORDPRESS_DB_NAME=wordpress hub.c.163.com/library/wordpress

c34d8efdf953e576089065897d71a20367b03a6e9967db278144de3740c6884d

  • 参数解释

  • -v /blog:/var/www/html:是将容器/var/www/html的文件存储到本地的/blog中

  • -p 80:80 将容器的80端口映射到本机的80端口

  • WORDPRESS_DB_HOST==mysql 的ip

  • WORDPRESS_DB_USER=哪个用户连接

  • WORDPRESS_DB_PASSWORD=连接密码

  • WORDPRESS_DB_NAME=使用哪个库

使用link【别名】【方式一】


  • 注:使用这个搭建需要先删除之前创建的wordperess容器,我只是做出说明,就不做删除创建操作了

[root@ccx ~]# #docker run -dit --name=blog --restart=always -v /blog:/var/www/html -p 80:80 --link=db:xx -e WORDPRESS_DB_HOST=xx -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=haha -e WORDPRESS_DB_NAME=wordpress hub.c.163.com/library/wordpress

[root@ccx ~]#

  • 在常规搭建上的修改说明

  • 新增一行:--link=db:xx:别名的意思,就是当使用xx主机,就相当于使用db容器

  • 修改行:WORDPRESS_DB_HOST=xx将主机名改为别名

使用link【别名】【方式二】


  • 注:使用这个搭建需要先删除之前创建的wordperess容器,我只是做出说明,就不做删除创建操作了

[root@ccx ~]# #docker run -dit --name=blog --restart=always -v /blog:/var/www/html -p 80:80 --link=db:mysql hub.c.163.com/library/wordpress

[root@ccx ~]#

  • 在常规搭建上的修改说明

  • 修改行:--link=db:mysql:这种别名修改就是,db容器使用mysql

  • 删除行:后面的参数全给删了,删的原因是,都使用默认的,而默认值可以在镜像介绍中查看

在这里插入图片描述

测试

=================================================================

  • 上面2个步骤做完以后,就可以使用浏览器访问主机IP的80端口,这样就可以看到wordpress容器中的博客内容了。

  • 如:我现在的主机ip是192.168.16.128

[root@ccx ~]# ip a |grep 192

inet 192.168.16.128/24 brd 192.168.159.255 scope global noprefixroute dynamic ens33

inet 192.168.16.129/24 brd 192.168.159.255 scope global noprefixroute dynamic ens34

inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0

[root@ccx ~]#

  • 那么就在浏览器中输入192.168.16.128即可【默认80端口可以不用输入】

在这里插入图片描述

我上面的用户名是root,密码是haha

在这里插入图片描述

注册成功如下图

在这里插入图片描述

用刚才注册的用户名登陆上去就是如下图了

在这里插入图片描述

报错处理

===================================================================

You have to remove (or rename) that container to be able to reuse that name


  • 这种情况是因为创建某个容器的时候,意外失败了,再次创建的时候就会报下错

[root@ccx ~]# docker run -dit --name=blog --restart=always -v /blog:/var/www/html -p 80:80 -e WORDPRESS_DB_HOST=172.17.0.2 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=haha -e WORDPRESS_DB_NAME=wordpress hub.c.163.com/library/wordpress

docker: Error response from daemon: Conflict. The container name “/blog” is already in use by container “54c6c70f6cc37749e72a654ba5a53bd35fe822a194c5cff2706571e3fe7721d9”. You have to remove (or rename) that container to be able to reuse that name.

这种情况使用:docker ps -a是可以看到刚才创建的容器存在的,只是状态不是run罢了

  • 解决方法

删除掉创建的这个容器即可,如上,我的name是blog

[root@ccx ~]# docker rm blog

blog

[root@ccx ~]#

failed: port is already allocated


  • 这部一般是上面创建wordpress的时候报错的,全部报错内容如下

[root@ccx ~]# docker run -dit --name=blog --restart=always -v /blog:/var/www/html -p 80:80 -e WORDPRESS_DB_HOST=172.17.0.2 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=haha -e WORDPRESS_DB_NAME=wordpress hub.c.163.com/library/wordpress

235afb37d724431e3489b3efdbc0173be3bc47727c5a0cbc673de7c90b686288

docker: Error response from daemon: driver failed programming external connectivity on endpoint blog (eb4f1d1ae1c98f0ede1d842c91ea04dd566af9f34c46bda0388039c8b888131f): Bind for 0.0.0.0:80 failed: port is already allocated.

  • 原因

这是因为端口被占用了,如下,我的是有一个nginx容器存在,占用了我的80端口

[root@ccx ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

0b033eb76f52 hub.c.163.com/library/mysql “docker-entrypoint.s…” About a minute ago Up About a minute 3306/tcp db

b245ace74000 nginx:v1 “nginx -g 'daemon of…” 4 weeks ago Up 7 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp web

  • 解决方法

干掉我的nginx容器即可创建成功了

[root@ccx ~]# docker rm web -f

[root@ccx ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

0b033eb76f52 hub.c.163.com/library/mysql “docker-entrypoint.s…” About a minute ago Up About a minute 3306/tcp db

容器创建成功,浏览器打开提示“无法显示此网页”


  • 报错如下

如果是常规情况,我们可以直接关闭防火墙即可,但这是容器创建的wordpress,不能关闭防火墙,防火墙关了wordpress容器就自动停了【拍错步骤在下面,不要跳过,一步一步跟着走】

在这里插入图片描述

  • 首先要确定虚拟机上的这2个容器状态为UP

[root@ccx ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

92ae6f30b0de hub.c.163.com/library/wordpress “docker-entrypoint.s…” 18 minutes ago Up 13 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp blog

0b033eb76f52 hub.c.163.com/library/mysql “docker-entrypoint.s…” 23 minutes ago Up 13 minutes 3306/tcp db

[root@ccx ~]#

  • 确定80端口是被监听的

[root@ccx ~]# netstat -netlp | grep 80

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 0 101265 22294/docker-proxy

tcp6 0 0 :::80 ::😗 LISTEN 0 101488 22299/docker-proxy

[root@ccx ~]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值