其实很早就听说了docker这个东西,一直以来想玩不知道拿什么下手,再加上前段时间听了一个思科的年度网络报告讲解里面稍微提了一下docker的优势以及网络即服务的概念。想通了,不是每一步都得亲历亲为,docker就是一种很好的便捷方案,什么lnmp,lamp都不需要自己搭了,直接pull就行,于是乎就现学了一下docker的知识,然后上手一个博客。

在ubuntu中安装docker

#如果之前装过但是不能用可以尝试先写在下面的这几个包
sudo apt-get install docker-ce docker-ce-cli containerd.io #使用以下指令开启docker服务(一般刚安装晚会自动开启)
sudo systemctl start docker #使用以下指令检测docker是否成功开启
sudo systemctl status docker

显示绿色的running表示正在运行

使用docker配置博客相关的程序如lamp这种

一.找一个wordpress的镜像

可以使用网易的镜像站搜索也可以使用docker自带的search搜索

这里我使用网易的镜像站提供的镜像站

先看一下下面的说明

具体参数后面部署的时候在提

这里的选项都是要求配置一个数据库的

看来这个懒没法偷了(我们的给他整一个数据库)

于是我程热打铁搜了以下mysql的docker镜像

同样地配方,同样的pull

这里我们来看一下网易给的mysql的帮助文档

东西挺多的

大概概括以下就是配置mysql的用户名(默认为root)配置密码,配置数据库….

至此所有的环境都陪好了,是不是挺轻松的,即不需要整mysql的密码,也不需要搭lamp的环境。接下来就是利用镜像创建对应的容器并且建立容器见的连接

创建容器启动我的博客

由于wordpress需要一个数据库才能起来,所以我们先配这个mysql

先看一下要什么参数

  • MYSQL_ROOT_PASSWORD: 设置 mysql 数据库的密码eg:MYSQL_ROOT_PASSWORD=123qwe
  • MYSQL_DATABASE: 设置 mysql 的数据库名称eg:MYSQL_DATABASE=myblog
  • MYSQL_USER: 设置 mysql 的数据库用户建议使用默认的root

于是可以用以下命令来创建一个数据库容器

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123qwe -e MYSQL_DATABASE=myblog -d mysql5.8

参数解释

  • run 运行一个docker程序
  • -p 3306:3306 端口映射将容器里的3306映射到主机的3306端口,注意前面的表示主机上的端口,后面表示的是容器内的端口
  • -e MYSQL_ROOT_PASSWORD=123qwe 设置root密码,注意这种镜像需要的参数每一个前面都要加一个 -e
  • -d mysql5.8 表示使用mysql5.8这个镜像来创建docker具体可以看下面这个图片(应该与我的不一样)

这里提一下docker查看容器ip的方法

docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)

简单解释以下

前面表示查看ip信息

后面的$(docker ps -aq)便是docker的id可以通过docker ps查看

我的结果如下

我的ip是172.17.0.2

可以使用[mysql -u root -h 172.17.0.2 -p 123qwe]尝试连接,一般主机与docker之间的网络是联通的可以连上

或者使用mysql -u root -h 172.17.0.2 -p 123qwe 应为我们做了端口映射注意mysql会默认使用3306这个端口所以无需指定端口

于是我们就用一句话创建了一个数据库

接下来就是创建一个wordpress连接到这个数据库

同样先看一下需要的参数

  • WORDPRESS_DB_HOST: wordpress 连接数据库的参数默认 ip:port
  • WORDPRESS_DB_USER: wordpress 连接数据库的用户
  • WORDPRESS_DB_PASSWORD: wordpress 连接数据库的密
  • WORDPRESS_DB_NAME: wordpress 数据库的名称默认为:wordpress

使用以下语句创建一个docker

docker run -e WORDPRESS_DB_HOST=172.17.0.2:3306 -e WORDPRESS_DB_USER=root WORDPRESS_DB_PASSWORD=123qwe -e WORDPRESS_DB_NAME=myblog -p 8000:80 -d wordpress

这里只解释部分参数

WORDPRESS_DB_HOST=172.17.0.2:3306 这里的ip是容器的ip,原因是容器间的网络是互通的,也可以使用主机的ip,原因之前提过,但是不能使用127.0.0.1

-p 8000:80 将容器的80端口映射到主机里面

至此,已经可以正常通过浏览器访问这个博客了,访问方式为主机ip:8000 后面为什么使用8000这个前面解释过

我的博客是http://39.103.230.97:8000

最后谈以下用docker搭建的感觉

最直观的感觉是简单,总体上我只用了4句话就建立了一个博客,而且基本上不用担心出什么问题。

接下来的方向

1.docker如何实现内容的移植(其实这是我第二次写这篇博客,第一次写在我平时用的电脑上,然后移植的时候发现内容没了,电脑上的资料也删了)

2.docker与主机间的网络关系

我用docker搭建的第一个博客的更多相关文章

  1. 使用hexo搭建属于自己的博客

    如果你喜欢拥有自己的博客域名,如果你喜欢折腾,可以先点击luckykun.com,看看效果,再选择要不要进来看看--- 之前一直都在博客园写博客,不过最近在逛园子的时候不小心看到了hexo,简直有种相 ...

  2. Hello World -- 第一篇博客

    今年注定是不寻常的一年,因为技术,接触了许多大牛.通过一篇篇博文,看到了大牛们勤奋好学.孜孜不倦的精神,于是决定也开个博客,向大牛学习. 博客开了,写点什么呢?奈何肚子里墨水不多,吐出来也多是白沫,不 ...

  3. 使用Hexo+Github搭建属于自己的博客(进阶)

    主题的配置:这里以NexT主题作为题材 1.安装NexT,在其文件夹中鼠标右键,点击Git Base Here.输入命令:git clone https://github.com/iissnan/he ...

  4. Hexo+GitHub+Netlify一站式搭建属于自己的博客网站

    喜欢的话请关注我的个人博客我在马路边https://hhongwen.cn/,此文为博主原创,转载请标明出处. 更好的阅读体验请点击查看:Hexo+GitHub+Netlify一站式搭建属于自己的博客 ...

  5. 用express搭建一个简单的博客系统

    转自:https://blog.csdn.net/qq_29721837/article/details/62055603 Express 简介 Express 是一个简洁而灵活的 node.js W ...

  6. Vue + TypeScript + Element 搭建简洁时尚的博客网站及踩坑记

    前言 本文讲解如何在 Vue 项目中使用 TypeScript 来搭建并开发项目,并在此过程中踩过的坑 . TypeScript 具有类型系统,且是 JavaScript 的超集,TypeScript ...

  7. Hello World -- 第一篇博客 -- 活着的意义

    今年注定是不寻常的一年,因为技术,接触了许多大牛.通过一篇篇博文,看到了大牛们勤奋好学.孜孜不倦的精神,于是决定也开个博客,向大牛学习. 博客开了,写点什么呢?奈何肚子里墨水不多,吐出来也多是白沫,不 ...

  8. Docsify+腾讯云对象存储 COS,一键搭建云上静态博客

    最近一直在想如何利用 COS 简化静态博客的搭建过程.搜了很多的静态博客搭建过程,发现大部分的静态博客都要通过编译才能生成静态页面.功夫不负有心人,终于让我找到了一个超简洁博客的搭建方法. 效果预览 ...

  9. hugo建站 | 我的第一个博客网站

    前言 博客地址 - https://billie52707.cn 1. 建博客的初衷? 2020那一年,八月的第一天,我还是像往常一样打开我的域名网站,本以为还是会像以前一样显示每日一图的界面,结果出 ...

  10. 第一篇博客:Hello World

    2016年10月10日,双十,好日子,决定开始写第一篇博客,标题想了会,就叫Hello World 吧,哈哈^_^. 首先感谢博客园的管理们能批准我的申请,记得在14年的时候申请过一次,竟然没申请通过 ...

随机推荐

  1. css 你真的了解padding吗?

    前言 padding 简写属性在一个声明中设置所有内边距属性,实际上在使用过程中它对block元素和内联元素的处理是不一样的. 正文 对于block元素 如果宽度非auto那么容器会变大,如果容器宽度 ...

  2. node 父子进程传递对象

    背景 node的父子进程中可以传递这是肯定的,但是传递对象,这是一个稀奇的地方. code 发送 server 对象 sendHandle 参数可用于将一个 TCP server 对象句柄传给子进程, ...

  3. 远程主机可能不符合glibc和libstdc++ VS Code服务器的先决条件

    报错信息 VSCode无法连接远程服务器,终端一直提醒: [22:46:01.906] > Waiting for server log... [22:46:01.936] > Waiti ...

  4. axios请求时获取不到错误提示问题。

    前端方面使用axios请求,由于新增时,有的条件格式填写错误.后端返回412状态码. ,axios可能封装不完善,他获取数据使状态码为4开头的统统不暴露出去,导致请求时,412这样的状态码,获取不到里 ...

  5. HL7标准的版本

    HL7V2 HL7v2是用于在系统之间交换临床和患者信息的最广泛使用的医疗保健消息传递标准.HL7v2的目标是使用代表临床事件信息的标准化消息(例如患者管理活动.人口统计.医疗订单.结果和财务信息)在 ...

  6. 如何在 ACK 中使用 MSE Ingress

    简介: 本文将为大家分享一下 Ingress 标准 和 实现的趋势,介绍一下 MSE Ingress 在这个趋势下的优势和实践,为大家做关键入口选择多一些参考. 作者:彦林 随着云原生架构的普及,K8 ...

  7. RocketMQ 消息集成:多类型业务消息-普通消息

    简介: 本篇将从业务集成场景的诉求开始,介绍 RocketMQ 作为业务消息集成方案的核心能力和优势,通过功能场景.应用案例以及最佳实践等角度介绍 RocketMQ 普通消息类型的使用. 引言 Apa ...

  8. 阿里云PolarDB开源数据库社区与 Tapdata 联合共建开放数据技术生态

    ​简介:近日,阿里云PolarDB开源数据库社区宣布将与 Tapdata 联合共建开放数据技术生态. 近日,阿里云PolarDB开源数据库社区宣布将与 Tapdata 联合共建开放数据技术生态.在此之 ...

  9. KubeNode:阿里巴巴云原生 容器基础设施运维实践

    简介: 目前 KubeNode 已经覆盖了阿里巴巴集团的所有的 ASI 集群,接下来,将随着阿里巴巴集团"统一资源池"的项目,推进 KubeNode 覆盖更大的范围.更多的场景,让 ...

  10. 一文读懂容器存储接口 CSI

    简介: 在<一文读懂 K8s 持久化存储流程>一文我们重点介绍了 K8s 内部的存储流程,以及 PV.PVC.StorageClass.Kubelet 等之间的调用关系.接下来本文将将重点 ...