Docker安装各种服务

Docker 安装 Nginx

获取最新版 Nginx 镜像

1
docker pull nginx:latest

最新

查看本地镜像

使用以下命令来查看是否已安装了 Nginx

1
docker image

已安装

运行容器

1
docker run --name nginx-test -p 8080:80 -d nginx
  • –name nginx-test:容器名称。
  • -p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
  • -d nginx: 设置容器在在后台一直运行。

成功

安装成功

最后我们可以通过浏览器可以直接访问 8080 端口的 nginx 服务

成功

Docker 安装 Node.js

获取最新版 node 镜像

1
docker pull node:latest

node

查看本地镜像

1
docker image

查看

运行容器

1
docker run -itd --name node-test node
  • –name node-test:容器名称。

运行

安装成功

最后进入查看容器运行的 node 版本

1
2
docker exec -it node-test /bin/bash
root@6c5d265c68a6:/# node -v

cg

Docker 安装 PHP

获取 PHP

1
docker pull php:5.6-fpm

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为php,标签为5.6-fpm的镜像

1
docker images

完成

Nginx + PHP 部署

启动 PHP

1
docker run --name  myphp-fpm -v ~/nginx/www:/www  -d php:5.6-fpm
  • –name myphp-fpm : 将容器命名为 myphp-fpm
  • -v ~/nginx/www:/www : 将主机中项目的目录 www 挂载到容器的 /www

创建 ~/nginx/conf/conf.d 目录

1
mkdir ~/nginx/conf/conf.d

在该目录下添加 ~/nginx/conf/conf.d/runoob-test-php.conf 文件,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server {
listen 80;
server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}
  • php:9000: 表示 php-fpm 服务的 URL,下面我们会具体说明
  • /www/: 是 myphp-fpm 中 php 文件的存储路径,映射到本地的 ~/nginx/www 目录

启动 nginx

1
2
3
4
5
docker run --name runoob-php-nginx -p 8083:80 -d \
-v ~/nginx/www:/usr/share/nginx/html:ro \
-v ~/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
--link myphp-fpm:php \
nginx
  • -p 8083:80: 端口映射,把 nginx 中的 80 映射到本地的 8083 端口。
  • ~/nginx/www: 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。
  • ~/nginx/conf/conf.d: 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。
  • –link myphp-fpm:php: 把 myphp-fpm 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm

部署

接下来我们在 ~/nginx/www 目录下创建 index.php,代码如下

1
2
3
<?php
echo phpinfo();
?>

浏览器打开 http://127.0.0.1:8083/index.php,显示如下

成功

Docker 安装 MySQL

拉取 MySQL 镜像

1
docker pull mysql:latest

获取

查看本地镜像

1
docker image

镜像

运行容器

1
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
  • -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
  • MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码

运行

安装成功

通过 docker ps 命令查看是否安装成功

成功

启动 MySQL的 Container

1
docker start 73de1fb9f4f4 # mysql对应的CONTAINER ID

进入 MySQL 容器

1
docker exec -it mysql-test bash

成功进入bash环境后,通过如下命令进入

1
mysql -h localhost -u root -p

mysql

Docker 安装 Redis

拉取最新版的 Redis 镜像

1
docker pull redis:latest

拉取

查看本地镜像

1
docker images

镜像、

运行容器

安装完成后,我们可以使用以下命令来运行 redis 容器

1
docker run -itd --name redis-test -p 6379:6379 redis

运行

  • -p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务

安装成功

成功

接着我们通过 redis-cli 连接测试使用 redis 服务

1
docker exec -it redis-test /bin/bash

成功

Docker 安装 MongoDB

拉取最新版的 MongoDB 镜像

1
docker pull mongo:latest

拉取

查看本地镜像

1
docker images

查看

运行容器

1
docker run -itd --name mongo -p 27017:27017 mongo --auth

运行

  • -p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。
  • –auth:需要密码才能访问容器服务

安装成功

接着使用以下命令添加用户和设置密码,并且尝试连接

1
docker exec -it mongo mongo admin
1
2
3
4
# 创建一个名为 admin,密码为 123456 的用户。
> db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
# 尝试使用上面创建的用户信息进行连接。
> db.auth('admin', '123456')

成功