Docker安装开发环境

Docker安装Nginx

Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务 。

1、查看可用的 Nginx 版本

访问 Nginx 镜像库地址: https://hub.docker.com/_/nginx?tab=tags

可以通过 Sort by 查看其他版本的 Nginx,默认是最新版本 nginx:latest

2、取最新版的 Nginx 镜像

docker pull nginx:latest

3、查看本地镜像

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

docker images

4、运行容器

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

docker run -it --name nginx-80 --rm -d -p 80:80 nginx

参数说明:

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

5、安装成功

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

6、自定义配置

mkdir -p /usr/local/docker/nginx //创建指定目录配置

示例1 静态资源配置:

静态资源直接访问。直接将静态资源文件复制到nginx html下即可。

# docker cp  宿主机: 本地目录   将需要进行静态处理的文件复制到 /usr/local/docker/nginx目录下
docker cp f4:/usr/share/nginx/html /usr/local/docker/nginx  

#启动Nginx 静态资料配置
docker run -it --name nginx-80 --rm -d -p 80:80 -v /usr/local/docker/nginx/html:/usr/share/nginx/html nginx

浏览器直接访问: http://服务器地址:80/qfnj/index.html

示例2 反向代理:

为方便,可将 nginx.conf 和 conf.d/default.conf 两个文件合并成一个文件再重新配置访问

 server_name  exam_qf;
 location / {
	    proxy_pass http://127.0.0.1:8080;
  }
docker run -it --name nginx-80 --rm -d -p 80:80  -v /usr/local/docker/nginx/nginx.conf:/etc/nginx/nginx.conf  nginx

示例3 负载均衡

nginx.conf

 upstream nginxCluster{
        server 192.168.20.136:8080;
        server 192.168.20.136:8081;
   }

    server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

     location /{
          proxy_pass http://nginxCluster;
     }
    }
#复制 docker容器内nginx.conf 到本地指定目录下
docker run -it --name nginx-80 --rm -d -p 80:80  -v /usr/local/docker/nginx/nginx.conf:/etc/nginx/nginx.conf  nginx

Docker安装MySQL

安装MySQL 5.* 版本

1、搜索镜像

docker search mysql

2、下载镜像

docker pull mysql:5.6

3、创建并启动MySQL容器

docker run -d  --name mysql5.6-3306  -p 3306:3306   -e MYSQL_ROOT_PASSWORD='root'  mysql:5.6

docker run -d --name mysql5.6-3306 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=‘Guoweixin927!’ mysql:5.6

4、访问测试
进入到容器内部 Guoweixin927!

docker exec -it mysql5.6-3306 bash

连接mysql数据库:

mysql -u root -p

输入数据库密码 即可完成。

5、授权其他机器登陆
1、授权主机访问:

MySQL>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; 

2、刷新权限:

MySQL>FLUSH PRIVILEGES;

3、退出:

MySQL>EXIT;

注意:(如果阿里云服务器部署和访问,防火墙默认是关闭的,需要手动开启)
https://www.cnblogs.com/kccdzz/p/8110143.html
阿里云控制组中加入该权限:
https://blog.csdn.net/yenange/article/details/89499840

安装MySQL 8.* 版本

docker pull mysql
#启动
docker run -d --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=guoweixin  mysql

#进入容器
docker exec -it mysql8 bash

#登录mysql
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'guoweixin';

参数说明:

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

docker run -d --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Guoweixin927! mysql

ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘Guoweixin927!’;

Docker 安装Redis

安装单机版Redis

1、搜索redis

docker search redis

2、下载镜像

docker pull redis:4.0.1

3、创建并运行容器

docker run --rm -d --name redis6379 -p 6379:6379 redis:4.0.1 --requirepass "guoweixin"

4、测试Redis

docker exec -it redis6379 bash   //进入redis命令
redis-cli    //开启客户端功能

低内存空间开启swap(阿里云)

https://www.techieliang.com/2018/11/1283/

内存过小docker可能会出现exited(137)错误,随机关闭某个容器,我这mysql被关了好几次。这实际上是os关的,并非docker。可以建立swap交换空间。

查看当前已有swap大小

free -m
total used free shared buff/cache available
Mem: 992 436 75 34 480 364
Swap: 0 0 0

可以看到 Swap 只有0,下面我们来扩大到2G,为什么2G,因为我这个物理内存是1G,一般大小建议如下:

物理内存建议的交换空间大小如果开启休眠功能建议的交换空间大小
? 2GB2倍3倍
> 2GB – 8GB相等2倍
> 8GB – 64GB>4GB1.5倍
> 64GB>4GB不推荐休眠

创建一个 Swap 文件

首先cd到一个想要创建文件的地方,要注意这个目录所在硬盘分区要有大于所要创建大小的空间

mkdir /swap
cd /swap
sudo dd if=/dev/zero of=swapfile bs=1024 count=2000000

然后会提示创建成功,创建的大小、用时、拷贝速度

将普通文件转换成 Swap 文件

sudo mkswap -f swapfile

给出如下提示:

Setting up swapspace version 1, size = 1999996 KiB
no label, UUID=XXXXXXXXXXX

激活 Swap 文件

sudo swapon swapfile

再次查看 free -m 的结果

卸载Swap文件及自动挂载

如果需要卸载这个 swap 文件,可以进入建立的 swap 文件目录。执行下列命令。

sudo swapoff swapfile

如果需要一直保持这个 swap开机自动挂载,可以把它写入 /etc/fstab 文件。

/XXXX/swapfile /XXXX swap defaults 0 0

补充dd指令含义

dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换

注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2

1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
3. ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
  obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
  bs=bytes:同时设置读入/输出的块大小为bytes个字节。
4. cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
5. skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
6. seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
7. count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
8. conv=conversion:用指定的参数转换文件。
  ascii:转换ebcdic为ascii
  ebcdic:转换ascii为ebcdic
  ibm:转换ascii为alternate ebcdic
  block:把每一行转换为长度为cbs,不足部分用空格填充
  unblock:使每一行的长度都为cbs,不足部分用空格填充
  lcase:把大写字符转换为小写字符
  ucase:把小写字符转换为大写字符
  swab:交换输入的每对字节
  noerror:出错时不停止
  notrunc:不截短输出文件
  sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

上述建立过程就是bs=1024 count=2000000,以1024位块大小,建立2000000个块,总共2048000000字节,所以显示的不是2GB大小,因为不是2097152字节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值