最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

以CentOS 7为例安装Docker_Docker 常用操作

XAMPP案例 admin 644浏览 0评论

安装 Docker,以CentOS为例

确定操作系统内核版本(CentOS 7要求64位,内核版本3.10+;CentOS 6要求64位,内核版本2.6+)。

uname -a

# Linux izwz98bpfv23i9a7d4yigoz 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

在 CentOS 下使用 yum 安装Docker并启动。

# 删除环境已存在的 docker
yum remove docker \
  docker-client \
  docker-client-latest \
  docker-common \
  docker-latest \
  docker-latest-logrotate \
  docker-logrotate \
  docker-selinux \
  docker-engine-selinux \
  docker-engine

# 安装需要依赖
yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

# 查找 docker 版本
yum list docker-ce.x86_64 --showduplicates | sort -r
# 安装 docker
yum -y install docker-ce-18.03.1.ce-1.el7.centos
systemctl start docker

安装Docker后,由于直接访问 dockerhub 下载镜像会非常缓慢,建议更换国内镜像,可以通过修改/etc/docker/daemon.js文件来做到。如果使用云服务器(如:阿里云),通常云服务器提供商会提供默认的镜像服务器,并不需要手动进行指定。

开通阿里云镜像加速

https://cr.console.aliyun.com/cn-shenzhen/instances/mirrors

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
 "registry-mirrors": ["https://claydu8h.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

检查 Docker 的信息和版本。

docker version
docker info

守护进程重启

systemctl daemon-reload

重启 Docker 服务

systemctl restart docker

停止 Docker

systemctl docker stop

运行 Hello-World 项目来测试 Docker。

docker run hello-world

也可以先用下面的命令下载镜像,然后再来运行。

docker pull <name>

运行镜像文件。

docker run <image-id>
docker run -p <port1>:<port2> <name>

查看镜像文件。

docker image ls
docker images

删除镜像文件。

docker rmi <name> 或者 <image-id>

查看正在运行容器。

docker ps

停止运行的容器。

docker stop <container-id>
docker stop <name>

对于那些不会自动终止的容器,就可以用下面的方式来停止。

docker container kill <container-id>

使用Docker

安装Nginx

基于Docker来运行一台HTTP服务器,选择用Nginx来搭建该服务,因为Nginx是高性能的Web服务器,同时也是做反向代理服务器的上佳选择。要做到这件事情,只需要下面这条命令在Docker中创建一个容器即可。

docker pull nginx
docker container run -d -p 80:80 --rm --name mynginx nginx

# 浏览器访问对应自己对应 ip,可以看到 nginx 标准页面

说明:上面的参数-d表示容器在后台运行(不产生输出到Shell)并显示容器的ID;-p是用来映射容器的端口到宿主机的端口;--rm表示容器停止后自动删除容器,例如通过docker container stop mynginx以后,容器就没有了;—name后面的mynginx就是自定义容器的名字。在创建容器的过程中,需要用到nginx的镜像文件,镜像文件的下载是自动完成的,如果没有指定版本号,默认是最新版本(latest)。

如果需要将自己的Web项目(页面)部署到Nginx上,可以使用容器拷贝命令将指定路径下所有的文件和文件夹拷贝到容器的指定目录中。

docker container cp /root/web/index.html mynginx:/usr/share/nginx/html

如果不愿意拷贝文件也可以在创建容器时通过数据卷操作--volume将指定的文件夹映射到容器的某个目录中,例如将Web项目的文件夹直接映射到/usr/share/nginx/html目录。

docker container run -d -p 80:80 --rm --name mynginx --volume $PWD/html:/usr/share/nginx/html nginx

说明:上面创建容器和拷贝文件的命令中,container是可以省略的,也就是说docker container rundocker run是一样的,而docker container cpdocker cp是一样的。此外,命令中的--volume也可以缩写为-v,就如同-d--detach的缩写,-p--publish的缩写。$PWD代表宿主系统当前文件夹,这个用过Linux系统的人相信很容易理解。

要查看运行中的容器,可以使用下面的命令。

docker ps

要让刚才创建的容器停下来,可以使用下面的命令。

docker stop mynginx

由于在创建容器时使用了--rm选项,容器在停止时会被移除,使用下面的命令查看所有容器时,应该已经看不到刚才的mynginx容器了。

docker container ls -a

如果在创建容器时没有指定--rm选项,那么也可以使用下面的命令来删除容器。

docker rm mynginx

 

自定义修改 nginx 配置
  • 创建一个目录,预先把原来 nginx 配置全部 copy 出来,这样方便修改。
    docker container cp mynginx:/etc/nginx .
    docker container run -d -p 80:80 --rm \
     --name mynginx \
     --volume $PWD/mynginx:/etc/nginx \
     --volume $PWD/mynginx/html:/usr/share/nginx/html nginx
    cd html
    echo '<h1>Hello Nginx</h1>' >> index.html

    访问对应 IP:80 ,看到刚刚输入的 Hello Nginx

  • 需要自定义 nginx 文件可以在 $PWD/mynginx/conf.d目录下创建自定义配置就好了

 

安装MySQL

可以先检查一下服务器上有没有MySQL的镜像文件。

docker search mysql

下载MySQL镜像并指定镜像的版本号。

docker pull mysql:5.7

docker pull mysql # 不指定版本下载当前最新版本

如果需要查看已经下载的镜像文件,可以使用下面的命令。

docker images

创建并运行MySQL容器。

docker run -d -p 3306:3306 \
--name mysql \
-v $PWD/mysql/conf:/etc/mysql/mysql.cnf.d \
-v $PWD/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql

注意,上面创建容器时又一次使用了数据卷操作,那是因为通常容器是随时创建随时删除的,而数据库中的数据却是需要保留下来的,所以上面的两个数据卷操作一个是映射了 mysql 配置文件所在的文件夹,一个是映射了 mysql 数据所在的文件夹,这里的数据卷操作非常重要。可以将 mysql 的配置文件放在$PWD/mysql/conf目录下, 创建 mysqld.cnf,配置文件的具体内容如下所示:

[mysqld]
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
datadir=/var/lib/mysql
log-error=/var/log/mysql/error.log
server-id=1
log-bin=/var/log/mysql/mysql-bin.log
expire_logs_days=30
max_binlog_size=256M
symbolic-links=0

如果安装了MySQL 8.x版本(目前的最新版本),在使用客户端工具连接服务器时可能会遇到 error 2059: Authentication plugin 'caching_sha2_password' cannot be loaded 的问题,这是因为MySQL 8.x默认使用了名为 caching_sha2_password 的机制对用户口令进行了更好的保护,但是如果客户端工具不支持新的认证方式,连接就会失败。解决这个问题有两种方式:一是升级客户端工具来支持MySQL 8.x的认证方式;二是进入容器,修改MySQL的用户口令认证方式。下面是具体的步骤,先用docker exec命令进入容器的交互式环境,假设运行MySQL 8.x的容器名字叫mysql

docker exec -it mysql /bin/bash

进入容器的交互式Shell之后,可以首先利用MySQL的客户端工具连接MySQL服务器。

mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.22 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;

接下来通过SQL来修改用户口令就可以了。

alter user 'root'@'%' identified with mysql_native_password by '123456' password expire never;

当然,如果愿意你也可以查看一下用户表检查是否修改成功。

use mysql;
select user, host, plugin, authentication_string from user where user='root';
+------+-----------+-----------------------+-------------------------------------------+
| user | host     | plugin               | authentication_string                     |
+------+-----------+-----------------------+-------------------------------------------+
| root | %         | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | localhost | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------+-----------+-----------------------+-------------------------------------------+
2 rows in set (0.00 sec)

在完成上面的步骤后,现在即便不更新客户端工具也可以连接 MySQL 8.x

转载请注明:XAMPP中文组官网 » 以CentOS 7为例安装Docker_Docker 常用操作

您必须 登录 才能发表评论!