docker安装lnmp

  sre

sF64UA.jpg

左大使出品
nginx-modules.jpg
一、添加 别名:vim /root/.bashrc
alias grep=’grep –color’
alias d=’docker’
alias dpa=’docker ps -a’ 查看已经创建的容器,运行的,停止的,都可以看到
alias di=’docker images’ 查看已有的镜像
alias pg=’ps -ef | grep’
alias ssg=’ss -tunlp | grep’

二、docker环境安装:
1、安装epel源
yum install –y epel-release

2、安装docker
yum install -y docker-io

3、修改docker 配置文件
vim /etc/sysconfig/docker yum安装的默认配置文件位置。centos7.2 也是这个位置。
有的特殊情况,没有配置文件,通过/usr/lib/systemd/system/docker.service 添加配置 (systemd的服务管理文件。作用类似 /etc/init.d/docker )
修改配置:
other_args=’–graph=/data/docker’ 指定docker的目录。不指定 默认在/var/lib/docker 下 ;其他暂时不需要变动。

4、service docker start

chkconfig docker on

docker -v 可以看到 安装的docker 版本,因为内核 为 2.6 可安装docker 最高版本为 1.7.1

三、部署docker 仓库
1、下载国内的镜像源的 registry
docker pull hub.c.163.com/library/registry:latest
可以用 di (docker images) 命令查看 下载到的 镜像

2、 修改镜像名。
d tag hub.c.163.com/library/registry:latest registry
删除 冗余的 镜像。
d rmi hub.c.163.com/library/registry

3、启动 registry
docker run -d -p 5000:5000 –restart=always –name registry registry 启动 registry

4、启动完成后,若没有报错,会输出一串字符串,即为容器id ,在/data/docker/containers 下有该容器id的 目录,里面有所有该容器的信息。
可以用dpa (docker ps -a) 查看已启动的容器和启动的状态。当且仅当 STATUS 为 up [time] 时表示 容器 启动正常。
若启动失败,可以用docker logs -f registry (容器名,容器id) 来查看容器的日志。

一个内网环境一般只需要一个 registry ,可以做 一些定制化的修改,包括仓库的大小修改,给仓库增加验证。这里是用默认的方式启动的仓库,大小为10G,且无需验证就可以连接

5、修改配置文件 所有需要连接使用这个registry的 服务器上的docker都要添加这条配置。–insecure-registry 172.22.67.39:5000 172.22.67.39是我部署registry的服务器ip
添加配置:
other_args=’–graph=/data/docker –insecure-registry 172.22.67.39:5000′

service docker restart 重启 容器

四、安装redis
1、下载镜像
docker pull hub.c.163.com/library/redis:latest
d tag hub.c.163.com/library/redis redis
d rmi hub.c.163.com/library/redis

2、宿主机创建相关目录。准备配置文件:
mkdir /data/App/redis/2401/{run,conf} -p
拷贝一份配置文件 至/data/App/redis/2401/conf下。其中:
daemonize no 该配置必须为 no ,容器 要正常运行,进程必须要在前台 运行。

3、启动命令:
docker run -d –name redis-2401 -p 2401:6379 –restart=always -v /etc/localtime:/etc/localtime:ro -v /data/App/redis/2401/conf/6379.conf:/usr/local/etc/redis/redis.conf -v /data/App/redis/2401/run:/data redis redis-server /usr/local/etc/redis/redis.conf

docker run -d –name redis-2001 -p 2001:2001 –restart=always -v /etc/localtime:/etc/localtime:ro -v /data/redis/2001/conf/2001.conf:/usr/local/etc/redis/redis.conf -v /data/redis/2001/run:/data redis redis-server /usr/local/etc/redis/redis.conf

38的启动命令:
docker run -d –name redis-2401 -p 2401:2401 –restart=always -v /etc/localtime:/etc/localtime:ro -v /data/App/redis/2401/conf/2401.conf:/usr/local/etc/redis/redis.conf -v /data/App/redis/2401/run:/data 172.22.67.38:5000/redis redis-server /usr/local/etc/redis/redis.conf

参数解释:
docker run -d :docker run 是容器启动命令, -d 参数是容器内进程在后台运行
–name redis-2401:指定容器 名称
-p 2401:6379:宿主机端口号:容器内端口号 -p 参数是端口映射
–restart=always:容器总是自动重启,如果服务器重启,重启后该容器会自动重启。
-v /etc/localtime:/etc/localtime:ro:宿主机的时间映射到容器内,保证容器内时间和宿主机一致
-v /data/App/redis/2401/conf/6379.conf:/usr/local/etc/redis/redis.conf :目录映射,把宿主机上的配置文件映射到容器内
-v /data/App/redis/2401/run:/data :目录映射 ,把容器里的/data目录 映射到 宿主机上
redis:redis是镜像名,指定该容器用哪个镜像启动,前面给镜像名打过tag,改为了redis ;
redis redis-server /usr/local/etc/redis/redis.conf :指定容器需要执行的命令,即redis启动命令。

4、验证:
进入容器:
docker exec -ti redis-2401 bash
然后查看进程是否启动,或者用redis-cli 命令验证

在宿主机上直接调用容器内部的命令进行验证:
docker exec -ti redis-2401 redis-cli

到另一台机器上telnet 宿主机ip 2401 进行验证

五、安装mysql:
1、下载镜像:
docker pull hub.c.163.com/library/mysql:5.6.36
docker tag hub.c.163.com/library/mysql:5.6.36 mysql:5.6.36
d rmi hub.c.163.com/library/mysql:5.6.36

2、先创建一个默认的mysql容器:
docker run -d –name mysql_s1 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.36

其中-e MYSQL_ROOT_PASSWORD=123456 是设置数据库mysql的初始化密码

3、进入容器,检测mysql是否能登陆,并做些定制化修改
docker exec -ti mysql_s1 bash

创建 目录:(在容器里)
mkdir /data/mysql/3306/{binary,data,relay,run,tmp} -p
exit 命令退出容器

4、将修改后的容器打成一个新的镜像:
docker commit -m “add path for mysql” mysql_s1 zuowei/mysql

参数解释:
docker commit 将修改后的容器提交为新的镜像
-m “add path for mysql”:备注信息,对该容器做了哪些修改
mysql_s1:对具体哪个容器做提交。这里可以用该容器的容器id替代
zuowei/mysql:生成的新的镜像名

之后可以用di (docker images) 查看新生成的镜像

5、在宿主机上创建目录:
mkdir -p /data/App/mysql/{2001,conf}
mkdir -p /data/App/mysql/2001/{binary,data,relay,run,tmp}

将常用mysql配置文件放入 /data/App/mysql/conf 下
注意修改所有端口号信息修改为 3306

6、启动本次所需容器:
docker run -d –user=mysql –name mysql -p 2001:3306 –restart=always -v /etc/localtime:/etc/localtime:ro -v /data/App/mysql/conf/3306.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /data/App/mysql/2001:/data/mysql/3306 zuowei/mysql

参数解释:
–user=mysql:容器的启动用户为mysql用户,这是官方镜像,镜像在制作的时候,已经创建mysql用户,所以可以直接使用。
-v /data/App/mysql/conf/3306.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf:配置文件映射到 容器里,后面是容器里mysql的默认配置文件位置。
zuowei/mysql:新的镜像名。这里默认执行的是官方镜像启动脚本,故不用添加启动命令。

7、验证:
进入容器验证
在宿主机上用容器内的命令验证:
d exec -ti mysql mysql -uroot -p123456

用之前创建的默认容器来验证,可以验证ip地址,端口号
d exec -ti mysql_s1 mysql -uroot -P2001 -h172.22.67.39 -p123456

六、安装nginx:
1、下载镜像:
docker pull hub.c.163.com/library/nginx:latest
d tag hub.c.163.com/library/nginx nginx
d rmi hub.c.163.com/library/nginx

2、宿主机上创建目录:
mkdir -p /data/App/nginx/{conf,html,logs}
在 /data/App/nginx/conf 中放入配置文件

3、启动容器:
d run -d –name nginx -p 80:80 –restart=always -v /etc/localtime:/etc/localtime:ro -v /data/App/nginx/conf:/etc/nginx -v /data/App/nginx/html:/usr/share/nginx/html -v /data/App/nginx/logs:/var/log/nginx nginx

4、验证:
在浏览器上用宿主机ip:80 即可验证

七、将镜像push到仓库
1、打tag:
d tag zuowei/mysql 172.22.67.39:5000/mysql tag的格式必须是 ip:5000/容器名
2、把镜像push:
docker push 172.22.67.39:5000/mysql

其他镜像也是一样操作:
d tag redis 172.22.67.39:5000/redis
d push 172.22.67.39:5000/redis

d tag nginx 172.22.67.39:5000/nginx
d push 172.22.67.39:5000/nginx

八、制作nginx+php容器:
d run -d –name showdoc –restart=always -v /etc/localtime:/etc/localtime:ro -p 1501:80 -v /data/App/showdoc/conf:/data/nginx/conf -v /data/App/showdoc/php.conf:/usr/local/php-5.6.19/etc -v /data/App/showdoc/logs:/data/nginx/logs -v /data/App/showdoc/html:/data/nginx/html nginx-php

d run -d –name showdoc –restart=always -v /etc/localtime:/etc/localtime:ro -p 1501:80 -v /data/App/showdoc/conf:/data/nginx/conf -v /data/App/showdoc/php.conf:/usr/local/php-5.6.19/etc -v /data/App/showdoc/logs:/data/nginx/logs -v /data/App/showdoc/html:/data/nginx/html nginx-php