Centos7安装Docker并部署常用服务

之前由于使用Frp做内网穿透,将自己的电脑暴露在公网了,于是自己的电脑被植入了后门,后面系统重装了,同时也把作为跳板的云服务器也重新装了。之后重新部署Docker和对应服务,这篇文章记录了Docker和一起常用容器的安装和部署,这篇文章如果有新的常用服务或者日后重装系统,文章也会重新修改,以保证时效性。

安装Docker服务

更新Yum包

这一步是可选的,线上环境要谨慎使用该命令,我是新安装的系统

yum -y update

安装必要的软件包

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

设置Docker的Yum源

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

我这里用的是阿里源,下载速度会更快一些,如果想用中央仓库的源,可以执行下面的命令

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

安装Docker

如果想安装指定版本的Docker,可以使用下面的命令查看可用版本有哪些

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

我的输出结果如下:

Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror
Installed Packages
docker-ce.x86_64            3:23.0.1-1.el7                     docker-ce-stable
docker-ce.x86_64            3:23.0.1-1.el7                     @docker-ce-stable
docker-ce.x86_64            3:23.0.0-1.el7                     docker-ce-stable
…………中间省略…………
docker-ce.x86_64            18.06.3.ce-3.el7                   docker-ce-stable
docker-ce.x86_64            18.06.2.ce-3.el7                   docker-ce-stable
docker-ce.x86_64            18.06.1.ce-3.el7                   docker-ce-stable
docker-ce.x86_64            18.06.0.ce-3.el7                   docker-ce-stable
docker-ce.x86_64            18.03.1.ce-1.el7.centos            docker-ce-stable
docker-ce.x86_64            18.03.0.ce-1.el7.centos            docker-ce-stable
docker-ce.x86_64            17.12.1.ce-1.el7.centos            docker-ce-stable
docker-ce.x86_64            17.12.0.ce-1.el7.centos            docker-ce-stable
docker-ce.x86_64            17.09.1.ce-1.el7.centos            docker-ce-stable
docker-ce.x86_64            17.09.0.ce-1.el7.centos            docker-ce-stable
docker-ce.x86_64            17.06.2.ce-1.el7.centos            docker-ce-stable
docker-ce.x86_64            17.06.1.ce-1.el7.centos            docker-ce-stable
docker-ce.x86_64            17.06.0.ce-1.el7.centos            docker-ce-stable
docker-ce.x86_64            17.03.3.ce-1.el7                   docker-ce-stable
docker-ce.x86_64            17.03.2.ce-1.el7.centos            docker-ce-stable
docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
Available Packages

比如如果想安装18.06.3.ce-3.el7版本的Docker,可以使用命令

yum -y install docker-ce-18.06.3.ce

如果想直接安装最新版的Docker,可以使用命令

yum install docker

我这里是直接安装的最新版。

设置Docker开机自启动

systemctl start docker
systemctl enable docker

验证Docker版本

执行命令

docker version

得到如下结果:

Client: Docker Engine - Community
 Version:           23.0.1
 API version:       1.42
 Go version:        go1.19.5
 Git commit:        a5ee5b1
 Built:             Thu Feb  9 19:51:00 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          23.0.1
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.19.5
  Git commit:       bc3805a
  Built:            Thu Feb  9 19:48:42 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.18
  GitCommit:        2456e983eb9e37e47538f59ea18f2043c9a73640
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Docker安装Nginx

拉取镜像

先拉取最新的nginx镜像

docker pull nginx

复制原始配置文件

先直接使用刚刚pull的镜像创建一个容器,等下需要从里面复制出配置文件,后面我们在这个文件的基础上去修改配置

docker run --name nginx-test -d nginx

创建Nginx挂载目录

我们需要创建多个文件夹用来后续挂载目录,html文件夹用于存放静态页面,logs文件夹用于存放日志文件,conf.d文件夹用于存放default.conf等配置,cert文件夹用于存放证书,这些文件夹名字都可以进行自定义。

mkdir -p /root/docker/nginx/html /root/docker/nginx/logs /root/docker/nginx/conf.d /root/docker/nginx/cert

拷贝容器默认文件

之后我们将容器的默认配置文件nginx.conf拷贝到宿主机/root/docker/nginx文件夹下,再将默认的主页index.html拷贝到/root/docker/nginx/html

docker cp nginx-test:/etc/nginx/nginx.conf /root/docker/nginx
docker cp nginx-test:/etc/nginx/conf.d/default.conf /root/docker/nginx/conf.d
docker cp nginx-test:/usr/share/nginx/html/index.html /root/docker/nginx/html

创建并运行Nginx容器

之后就可以将容器创建并运行起来了,我这里使用了-v /etc/localtime:/etc/localtime是为了解决Nginx日志时间时区的问题

docker run -d -p 80:80 -p 443:443 --name nginx --restart=always\
-v /root/docker/nginx/html:/usr/share/nginx/html \
-v /root/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /root/docker/nginx/logs:/var/log/nginx \
-v /root/docker/nginx/conf.d:/etc/nginx/conf.d \
-v /root/docker/nginx/cert:/cert/ \
-v /etc/localtime:/etc/localtime nginx

此时打开对应服务器的80端口,便可以看到Nginx的欢迎页了,说明配置成功。

Docker安装Mysql

拉取Mysql5.7.48镜像

先拉取Mysql5.7.48镜像,这个应该是Mysql5最新的版本

docker pull mysql:5.7.41

运行Docker容器

之后使用镜像部署我们的Mysql容器,我这里没有使用宿主机默认的3306端口,目的是减少爆破风险,各位注意将其中的xxxxxxxxx换成Mysql真实的密码,密码尽量复杂一些。

docker run -d --name mysql --restart=always \
-v /root/docker/mysql/conf:/etc/mysql/conf.d \
-v /root/docker/mysql/logs:/logs \
-v /root/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=xxxxxxxxx \
-p 3307:3306 mysql:5.7.41

之后就可以远程连接上对应端口了

Docker部署Wordpress

wordpress是依赖于Mysql的,安装之前需要先安装好Mysql。

拉取Wordpress镜像

先拉取最新的wordpress镜像

docker pull wordpress:latest

在Mysql中新建wordpress数据库

用管理员密码登录刚刚创建的mysql,在里面创建一个wordpress数据库

CREATE DATABASE `wordpress` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';

创建uploads.ini文件

在/root/docker/wordpress/新建一个配置文件,名称为uploads.ini

vi /root/docker/wordpress/uploads.ini

这个文件的主要作用是便于修改php上传参数,将上传文件最大大小改为5MB,文件内容如下所示:

file_uploads = On
memory_limit = 256M
upload_max_filesize = 5M
post_max_size = 5M
max_execution_time = 300

运行Docker容器

使用如下命令直接创建并运行Wordpress容器

docker run -d --name wordpress \
-e TZ="Asia/Shanghai" \
-e WORDPRESS_DB_HOST=123.60.29.116:3307 \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=xxxxxxxxxxxx \
-e WORDPRESS_DB_NAME=wordpress \
-v /root/docker/wordpress/html:/var/www/html \
-v /root/docker/wordpress/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini \
-p 18801:80 \
--restart=always \
wordpress

各个参数的解释如下

-d : 在后台运行容器。
--name wordpress: 指定容器的名称为wordpress。
-e TZ="Asia/Shanghai":设置容器的时区为上海。
-e WORDPRESS_DB_HOST=xxx.xxx.xxx.xxx:3307:指定Wordpress数据库的主机地址和端口号。
-e WORDPRESS_DB_USER=root:指定Wordpress连接数据库的用户名。
-e WORDPRESS_DB_PASSWORD=xxxxxxxxxxxx:指定Wordpress连接数据库的密码。
-e WORDPRESS_DB_NAME=wordpress:指定Wordpress使用的数据库名称。
-v /root/docker/wordpress/html:/var/www/html:将主机的/root/docker/wordpress/html目录挂载到容器/var/www/html目录,使得容器内的Wordpress能够访问该目录下的内容。
-v /root/docker/wordpress/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini:将主机的/root/docker/wordpress/uploads.ini文件挂载到容器的/usr/local/etc/php/conf.d/uploads.ini文件,以便在容器内配置php上传参数。
-p 18801:80:将容器的80端口映射到主机的18801端口上,以便在主机上通过浏览器18801端口访问Wordpress服务。
--restart=always:设置容器总是重新启动。

原创文章,创作不易,版权所有,抄袭必究

作者:幽叶草。如若转载,需要先经过作者同意,并附上原文链接 https://blog.uusite.com/cloud/deploy/251.html

(1)
幽叶草的头像幽叶草
上一篇 2023年3月12日 下午12:04
下一篇 2023年3月18日 上午11:44

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注