Docker 是一种容器技术,它部署简单,能很好的进行服务隔离,生成镜像,Push到镜像仓库,其他机器一键拉取部署。

Docker分为社区版CE和企业版EE,社区版是免费提供给个人和小型团队使用,企业版会提供额外的收费服务。

CentOS 7使用Yum安装Docker,部署Go Web网站。本Go Web网站是我的个人愽客(http://snaill.net/),使用Gin+Gorm+Mysql+Nginx开发,本次只将Web愽客程序部署在Docker中,Mysql、Nginx暂时还部署在宿主机上。

一、安装Docker

1、Docker要求CentOS系统内核版本高于3.10,通过 uname –r 命令查看内核版本

2、使用 sudo yum update 命令更新yum包到最新

sudo yum update

3、如果安装过旧版本的话,卸载旧版本

sudo yum remove docker  docker-common docker-selinux docker-engine

4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

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

5、设置yum源信息

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

国内可使用阿里云,docker速度慢

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

6、可查看所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

7、安装Docker

sudo yum install docker-ce

如果想安装其他版本,在后面加上版本号,如:sudo yum install docker-ce-3:19.03.8

8、启动Docker

systemctl start docker

启动 start,停止 stop,重启 restart

设置开机启动

systemctl enable docker

查看Docker版本 docker version

到止Docker安装完成

二、部署Go Web

1、交叉编译Web项目,

由于开发环境是windows,所以进行交叉编译linux版Web项目,vs code终端PowerShell命令

$env:GOOS="linux"   -- 设置运行系统
go build -- 编译

2、由于Mysql装在宿主机上,Web需要访问,修改DB连接IP为172.17.0.1

由于mysql默认只能本机登录,通过以下命令,设置允许远程登录

mysql>GRANT ALL PRIVILEGES ON *.* TO 'your username'@'172.17.0.2' IDENTIFIED BY 'your password' WITH GRANT OPTION;

your username 和 your password 改成 mysql 数据库的用户名和密码

安装Docker后,172.17.0.2为Docker的默认IP

进入Docker:docker exec -it CONTAINER_ID sh

查看ip:ifconfig

宿主机的默认IP为172.17.0.1

3、编写Dockerfile文件,在项目根目录下新建名为Dockerfile的文件,内容如下,推荐第二种方式

3.1、项目文件全部打包到镜像里

FROM alpine

WORKDIR /data/www/wblog_docker
COPY wblog /wblog/
COPY conf/ /wblog/conf/
COPY sitedata/ /wblog/sitedata/
COPY static/ /wblog/static/
COPY views/ /wblog/views/
WORKDIR /wblog RUN apk add -U tzdata
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone EXPOSE 8090 ENTRYPOINT ["./wblog"]

3.2、配置等静态文件不打包到镜像里,运行时再映射到宿主机目录,修改配置而无需重新打包,

FROM alpine

WORKDIR /data/www/wblog_docker
COPY wblog /wblog/
WORKDIR /wblog RUN apk add -U tzdata
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone EXPOSE 8090 ENTRYPOINT ["./wblog"]

4、上传编译好的Web项目文件到 CentOS 机器上

5、根据 Dockerfile 打包 Docker 镜像

在CentOS上进入到项目根目录下,执行docker build打包镜像,命名最后的 . 指以当前目录下的Dockerfile文件打包镜像

docker build -t wblog:v1.0 .

6、打包完成后,输入 docker images 查看镜像

7、Docker 启动镜像,运行项目,两种方式对应3中的两种方式,推荐第二种方式

7.1、项目文件全在镜像中,运行 Docker 镜像

docker run -d -p 8090:8090 --name wblog wblog:v1.0

7.2、配置等静态文件映射到宿主机本地,运行 Docker 镜像,-v docker目录:宿主机目录

docker run -v /data/www/wblog_docker/conf:/wblog/conf -v /data/www/wblog_docker/sitedata:/wblog/sitedata -v /data/www/wblog_docker/static:/wblog/static -v /data/www/wblog_docker/views:/wblog/views -v /data/www/wblog_docker/log:/wblog/log -d -p 8090:8090 --name wblog wblog:v1.0

8、查看Docker运行情况 docker ps

STATUS 为Up xxx  状态运行,PORTS 为 0.0.0.0:8090->8090/tcp  宿主机端口映射Docke端口成功,Docker镜像运行成功。

个人博客就是部署在Docker中的,用Nginx代理,将snaill.net转发到8090端口

docker 常用命令

打包镜像:docker build -t wblog:v1.0 .

运行Docker镜像:docker run -d -p 8090:8090 --name wblog wblog:v1.0

静态文件映射到宿主机本地,运行Docker镜像:

docker run -v /data/www/wblog_docker/conf:/wblog/conf -v /data/www/wblog_docker/sitedata:/wblog/sitedata -v /data/www/wblog_docker/static:/wblog/static -v /data/www/wblog_docker/views:/wblog/views -v /data/www/wblog_docker/log:/wblog/log -d -p 8090:8090 --name wblog wblog:v1.0

查看运行镜像容器:docker ps -a

启动/停止/重启镜像容器:docker start/stop/restart

删掉镜像容器:docker rm ,删除前需先停止镜像容器

删掉镜像:docker rmi ,删除前需先删除镜像容器

查看镜像容器元信息:docker inspect

进入镜像容器:docker exec -it CONTAINER_ID sh

CentOS 7 Docker安装部署Go Web的更多相关文章

  1. docker安装部署、fastDFS文件服务器搭建与springboot项目接口

    一.docker安装部署 1.更新yum包:sudo yum update 2.安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动 ...

  2. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...

  3. Docker安装部署es集群

    Docker安装部署es集群:环境准备:已安装docker的centos服务器一台1. 拉取es版本docker pull elasticsearch:5.6.82. 新建文件夹 数据挂载目录 和 配 ...

  4. Docker安装部署Rancher

    # 一.Rancher简介 [Rancher](https://www.cnrancher.com/rancher/)是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开 ...

  5. CentOS 6.5安装部署Zabbix监控系统

    CentOS 6.5安装部署Zabbix监控系统 先说一点废话,我没有用centos7做实验,讲真,centos 7我也不常用,喜欢新版本的同学其实可以尝试下,注意一点的就是centos 6.5只支持 ...

  6. CentOS下Docker安装

    CentOS下Docker安装 1.安装: #sudo yum install docker 2.启动并加入开机启动: A.#sudo systemctl start docker B.#sudo s ...

  7. CentOS环境Docker安装教程(官方推荐的docker三种方式安装)

    CentOS环境Docker安装教程(官方推荐的docker三种方式安装) 一.使用yum方式安装 1.安装依赖包 $ sudo yum install -y yum-utils device-map ...

  8. Docker 安装部署

    Docker学习笔记 一.Ubuntu Docker 安装 (1).获取最新版本Docker安装包 lyn@lyn:/data/docker$ sudo wget -qO- https://get.d ...

  9. CentOS 使用 Docker 安装 Sentry

    官网介绍:Sentry是一个实时事件日志记录和汇集的日志平台,其专注于错误监控,以及提取一切事后处理所需的信息.他基于Django开发,目的在于帮助开发人员从散落在多个不同服务器上的日志文件里提取发掘 ...

随机推荐

  1. 阿里巴巴 《Java 开发者手册》+ IDEA编码插件

    4月22日,阿里巴巴发布了泰山版<Java 开发手册>,以前以为终极版就真的是终极版了,没想到还是想的太简单了,继终极版之后又发布了详尽版.华山版,这不,泰山版又来了.想想也对,行业一直在 ...

  2. opencl(4)命令队列

    1:创建命令队列 cl_command _queue  clCreateCommandQueue( cl_context context,   //上下文 cl_device_id device,   ...

  3. Grafana 插件地图Worldmap不显示

    介绍 最近上了ELK 日志分析,想着手看下用户的分布情况,在kibana 中展示用户分布情况是没有问题的,但是索引添加到Granfana 中的话就无法展示. 问题描述 添加ES索引以后,map地图一片 ...

  4. Rust异步之Future

    对异步的学习,我们先从Future开始,学习异步的实现原理.等理解了异步是怎么实现的后,再学习Rust异步编程涉及的2个库(futures.tokio)的时候就容易理解多了. Future rust中 ...

  5. Spring-AOP之工作实践(二)

    案例二.前端页面权限控制 对controllor控制器中的某写方法进行增强,如实现页面的按钮权限控制. /** * 保存session的容器 */ public class SessionContex ...

  6. PBFT共识算法

    拜占庭将军问题 我们已知的共识算法,Paxos.Raft解决的都是非拜占庭问题,也就是可以容忍节点故障,消息丢失.延时.乱序等,但节点不能有恶意节点.但如何在有恶意节点存在的情况下达成共识呢?BFT共 ...

  7. 在PyQt5中显示matplotlib绘制的图形

    import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import * from plot_pyqt import PlotCanva ...

  8. Logstash下字段以及嵌套Json字段类型转换

    前言 从filebeat传输到Logstash的数据,某个字段需要由string类型装换成float类型.但是不管怎么改logstash的配置文件都不生效,其实官方文档都有,但是具体细节方面的东西就得 ...

  9. 总结:PgSql备份pg_dump与还原pg_restore

    备份还原方法:pg_dump和pg_restore,先仔细说明这两个命令,再记录我的操作方法. 远程复制scp: #which scp  /usr/bin/scp #rpm -qf /usr/bin/ ...

  10. Python 图像处理 OpenCV (9):图像处理形态学开运算、闭运算以及梯度运算

    前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python ...