之前由于使用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