程序笔记   发布时间:2022-07-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用docker搭建个人博客大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

文章目录

  • 说明
  • 镜像准备
  • 创建mysql容器
  • 创建wordpress容器
    • 常规搭建
    • 使用link【别名】【方式一】
    • 使用link【别名】【方式二】
  • 测试
  • 报错处理
    • You have to remove (or reName) that container to be able to reuse that name
    • failed: port is already allocated
    • 容器创建成功࿰c;浏览器打开提示“无法显示此网页”
  • 总结

说明

下面只是说明了 docker的基本应用方式࿰c;只要有镜像就可以搭建出相应的服务。

镜像准备

  • 先下载2个镜像:wordpress和@H_261_57@mysql 如果下面命令不能拉取镜像࿰c;去我docker分类中࿰c;找到"docker镜像管理"࿰c;里面有关于镜像的详细说明
[root@ccx ~]# docker pull wordpress
[root@ccx ~]# docker pull mysql
  • 获取好以后的镜像如下
[root@ccx ~]# docker images | egrep 'wordpress|mysql'
hub.c.163 wangt.cc /library/wordpress   latest              dccaeccfba36        3 years ago         406 MB
hub.c.163 wangt.cc /library/mysql       latest              9e64176cd8a2        4 years ago         407 MB
[root@ccx ~]# 

创建mysql容器

  • 我docker分类中有使用的详细说明࿰c;想了解的可以去看看。
[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 wangt.cc /library/mysql
91afdb4857d21319187ccf2832d6721c85c4ffc82eab375e4b888e686cbbaf2a
[root@ccx ~]# 
  • 参数解释

    • /data:/var/lib/mysql:将容器中的数据分贝到本地/data目录中
    • -e MYSQL_ROOT_password=haha: 容器的root密码
    • -e MYSQL_DATABASE=wordpress:创建一个wordpress数据库【自定义的名称】
  • 获取mysql容器IP࿰c;待会需要用 可以看到这个容器的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 如果不开启防火墙࿰c;创建会报如下错误:
[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 wangt.cc /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 wangt.cc /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容器࿰c;我只是做出说明࿰c;就不做删除创建操作了
[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 wangt.cc /library/wordpress
[root@ccx ~]# 

  • 在常规搭建上的修改说明
    • 新增一行:--link=db:xx:别名的意思࿰c;就是当使用Xx主机࿰c;就相当于使用db容器
    • 修改行:WORDPRESS_DB_HOST=xx将主机名改为别名

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

  • 注:使用这个搭建需要先删除之前创建的wordperess容器࿰c;我只是做出说明࿰c;就不做删除创建操作了
[root@ccx ~]# #docker run -dit --name=blog --restart=always -v /blog:/var/www/html -p 80:80 --link=db:mysql hub.c.163 wangt.cc /library/wordpress
[root@ccx ~]# 
  • 在常规搭建上的修改说明
    • 修改行:--link=db:mysql:这种别名修改就是࿰c;db容器使用mysql
    • 删除行:后面的参数全给删了࿰c;删的原因是࿰c;都使用默认的࿰c;而默认值可以在镜像介绍中查看

      使用docker搭建个人博客

测试

  • 上面2个步骤做完以后࿰c;就可以使用浏览器访问主机IP的80端口࿰c;这样就可以看到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端口可以不用输入】

    使用docker搭建个人博客

    我上面的用户名是rootc;密码是haha

使用docker搭建个人博客

注册成功如下图

使用docker搭建个人博客

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

使用docker搭建个人博客

报错处理

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

  • 这种情况是因为创建某个容器的时候࿰c;意外失败了࿰c;再次创建的时候就会报下错
[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 wangt.cc /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是可以看到刚才创建的容器存在的࿰c;只是状态不是run罢了

  • 解决方法 删除掉创建的这个容器即可࿰c;如上࿰c;我的name是blog
[root@ccx ~]# docker rm blog
blog
[root@ccx ~]#

failed: port is already allocated

  • 这部一般是上面创建wordpress的时候报错的࿰c;全部报错内容如下
[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 wangt.cc /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.
  • 原因 这是因为端口被占用了࿰c;如下࿰c;我的是有一个nginx容器存在࿰c;占用了我的80端口
[root@ccx ~]# docker ps
CONTAINER ID   IMAGE                         COMMAND                  CREATED              STATUS              PORTS                               NAMES
0b033eb76f52   hub.c.163 wangt.cc /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 wangt.cc /library/mysql   "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp                            db

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

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

    使用docker搭建个人博客

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

[root@ccx ~]# docker ps
CONTAINER ID   IMAGE                             COMMAND                  CREATED          STATUS          PORTS                               NAMES
92ae6f30b0de   hub.c.163 wangt.cc /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 wangt.cc /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 ~]
  • 在主机上是能ping通该虚拟机的࿰c;所以排除主机到虚拟机网络不通问题

    使用docker搭建个人博客

  • 去虚拟机上curl测试࿰c;好家伙这上面也不能࿰c;主机上肯定不通了
[root@ccx ~]# curl 192.168.16.128
curl: (7) Failed connect to 192.168.16.128:80; Connection refused
[root@ccx ~]#
  • 我在网上找了挺多方法的࿰c;最后都没有解决࿰c;所以我就不放我试过失败的方法了࿰c;直接放成功的方法 【前提是满足上面所有条件】 解决方法是:重启wordpress这个容器就可以了࿰c;挺离谱的࿰c;但就是这么简单就解决了。
[root@ccx ~]# docker stop blog
blog
[root@ccx ~]# docker start blog
blog
[root@ccx ~]# 
[root@ccx ~]# docker ps 
CONTAINER ID   IMAGE                             COMMAND                  CREATED          STATUS          PORTS                               NAMES
92ae6f30b0de   hub.c.163 wangt.cc /library/wordpress   "docker-entrypoint.s…"   24 minutes ago   Up 3 minutes    0.0.0.0:80->80/tcp, :::80->80/tcp   blog
0b033eb76f52   hub.c.163 wangt.cc /library/mysql       "docker-entrypoint.s…"   29 minutes ago   Up 19 minutes   3306/tcp                            db
[root@ccx ~]
[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 ~]# curl 192.168.16.128  #因为这网站没打开过࿰c;所以是没内容的࿰c;只要不报错就可以了
[root@ccx ~]#
  • 只要curl不报错࿰c;这时候去浏览器输入该ip࿰c;肯定就不会报错了。 下面是我注册好并登陆以后的主页࿰c;我觉得还挺好看的哈。

    使用docker搭建个人博客

    使用docker搭建个人博客

总结

docker搭建服务就是这么简单࿰c;只要有相关的容器࿰c;就可以极简单的搭建出来啦。

大佬总结

以上是大佬教程为你收集整理的使用docker搭建个人博客全部内容,希望文章能够帮你解决使用docker搭建个人博客所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。