Iuhrey

一个常年被吊打的Web手 一个唱歌不好指弹垃圾的吉他手

记录搭建docker时踩的一些列坑

前言

由于近期要利用docker搭建环境复现一些漏洞,因此就学习了一波docker,没想到遇上了一堆坑,所以利用这篇文章来记录下坑如何解决的。

环境选择

我首推的还是在ubuntu下进行docker的安装,强烈不建议在centos的环境下,为什么要在ubuntu下呢,主要是因为centos太烂了,如果要在centos下安装ubuntu,首先得要求内核要大于3.10.0,查看内核命令如下:

1
uname -r

最低要求的3.10.0由于内核版本太低,例如overlay2这种功能就无法实现,这样会导致在后续安装中出现一系列的问题,解决一个又出另外一个。我就是迫于无奈才抛弃了centos,转而利用ubuntu安装了docker。这里ubuntu选用的是最新的18.04版本。

安装docker

首先得确保apt是最新版本,如果不是使用如下命令进行更新:

1
sudo apt-get update

接着如果有旧版本的docker,使用以下命令移除:

1
sudo apt-get remove docker docker-engine docker.io

添加使用 HTTPS 传输的软件包以及 CA 证书

1
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

添加Docker的GPG密钥,由于官方的被墙了,只能使用国内源的。

1
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

然后,我们需要向 source.list 中添加 Docker 软件源

1
sudo add-apt-repository "deb [arch=amd64] 	https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

最后,我们安装docker

1
2
sudo apt-get update 
sudo apt-get install docker-ce

启动docker

1
2
sudo systemctl enable docker
sudo systemctl start docker

运行docker试试,如果出现以下内容,则说明成功安装了docker

利用docker搭建环境

首先是获取镜像,这里获取的是原生的ubuntu

1
docker pull ubuntu:18.04

查看镜像

1
docker images

运行

1
docker run -it -d --name 容器名称 -p 8000:80 /bin/bash ubuntu:18.04

简要说明一下参数的作用,-it实际是两个参数-t和-i的合成,-i是指交互式操作,-t则是终端的意思,-d则是让容器在后台挂起,并且可以看到返回的id,–name则是新建容器的名称,-p表示docker的80端口映射到虚拟机的8000端口,/bin/bash则是表示调用的命令,最后是你镜像的名字。
这里简要说明一下,镜像类似c++中的类,而容器则是类的实体化,你只能对容器进行操作,而不能直接对镜像进行操作,每次启用docker run这个命令时,都会产生一个新的容器。可以用如下命令看到所有的容器:

1
docker container ls -a

这个可以看到运行的容器:

1
docker ps

查看了容器的id,可以通过以下命令进入容器

1
docker exec -it 容器id前三到四位 /bin/bash

接着就能在docker里面配置你想要的环境了

安装wordpress

首先更新apt包

1
apt-get update

在配置lamp环境前,说一下对服务操作的命令

1
2
3
4
5
6
7
service xxxx restart 重启

service xxxx status 状态

service xxxx start 启动

service xxxx stop 关闭

接着安装apache2

1
apt-get install apache2

接着是mysql

1
apt-get install mysql-server mysql-client

中途会让你设置密码,输入两次密码回车即可

接着是安装php以及php的一些服务插件

1
2
3
4
5
apt-get install php7.0

apt-get install libapache2-mod-php7.0

apt-get install php7.0-mysql

重启apache2和mysql

1
2
3
service apache2 restart

service mysql restart

此时在/var/www/html下创建一个php文件,若php文件被解析那就说php安装成功

安装phpmyadmin

1
apt-get install phpmyadmin

安装时:空格选择apache2,enter确定,下一步配置数据库,输入密码。

1
ln -s /usr/share/phpmyadmin /var/www/html

启用Apache mod_rewrite模块

1
a2enmod rewrite

重启服务

1
service php7.0-fpm restart

配置vim /etc/apache2/apache2.conf
在最底下加入如下代码

1
2
3
AddType application/x-httpd-php .php .htm .html 

AddDefaultCharset UTF-8

重启apache服务

1
service apache2 restart

建立数据库为wordpress

1
2
3
4
5
6
7
8
9
10
11
12
# 登录数据库
mysql -u root -p
# 创建数据库
CREATE DATABASE wordpress;
# 创建数据库用户和密码
CREATE USER wordpressuser@localhost IDENTIFIED BY '123456';
# 设置wordpressuser访问wordpress数据库权限
GRANT ALL PRIVILEGES ON wordpress.* TO user@localhost IDENTIFIED BY 'pass';//user为你所设置的user,pass为你所设置的密码
# 刷新数据库设置
FLUSH PRIVILEGES;
# 退出数据库
exit

下载wordpress

1
wget https://cn.wordpress.org/wordpress-4.8.1-zh_CN.tar.gz

解压

1
tar -xzvf latest.tar.gz

远程批量传输

1
rsync -avP /wordpress/ /var/www/html/wordpress

切换到wordpress目录,复制wp-config.php

1
2
cd /var/www/html/wordpress
cp wp-config-sample.php wp-config.php

编辑wp-config.php文件

1
vim wp-config.php

把刚刚我们设置的user和pass填入,修改之后为

接着访问
http://ip/wordpress/wp-admin/install.php
按照提示来就行了

遇到的某些问题

如果是在centos环境下,遇到的各种问题,建议之间换成ubuntu。

特别注意,ubuntu版本号一定要对上,ubuntu:16.04不出问题,但是ubuntu:18.04一堆问题。在安装前一定要确认自己的版本号

在建立新容器时碰到如下错误

1
2
Error response from daemon: Conflict. The container name "/test1" is already in use by container "d197fb61f61c1d1d7b605a49d3be658f9fa10f581bd02ff9574f8a39a62a716e". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.

这是因为该名称的容器已存在,查看所有的容器把该名字容器删除即可,删除命令

1
docker rm test1

如果是运行的容器,rm后面加个-f参数

进入docker安装apache时遇到的问题

1
E: Unable to locate package apache2

需要更新apt,命令如下:

1
apt-get update

重启失败的时候查看下服务状态,未启动时无法重启

碰到 ‘xxx’ command not find

缺什么安装什么

1
apt-get install xxx

参考链接

Linux新手入门:Unable to locate package错误解决办法
Docker 从入门到实践
ubuntu16.04安装wordpress

本站总访问量