最近太忙了,公司一直在忙着新版发布上线,所以一直都没有分享。
今天,要分享的内容是docker容器化部署服务器环境,之前的项目有用到过,发现这个容器部署在集群和多服务器统一管理上很是方便,所以就研究了一下,不过,对于一些新手来说,可能比较麻烦,因为docker应用,相当于是在各种软件和服务的基础上又封装了一遍自己的方法和命令,所以,再修改配置,拓展服务上会有点麻烦,当然,用熟了的话,还是很方便的,尤其适合运维者。
好了,废话不说,上代码
安装docker
yum update
yum -y install docker-io
service docker start
docker info
chkconfig docker on(置开机启动可无)
安装 docker-compose
版本影响不大,但和docker版本不对应时会报错()(1.1.0)(1.14.0)(1.8.0)
curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-uname -s
-uname -m
> /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose -version
用docker-compose 安装环境的话,会有一个专门装镜像文件的文件d 在home里面 (给别的服务器装的话,传这个就行)
然后安装别的都不用配置,防火墙开启相应的端口就好,阿里的话设置一下安全组
或者不用compose,直接用docker run 命令跑但是单个的,可能需要配置下,
创建容器 (该命令必须在docker-compose.yml文件的目录中运行否则报错)
docker-compose up --build -d
(网速过慢的话,可能中途会报错,链接时间过长,重新up一下试试)
成功后
(容器启动不了,报错redis打不开conf文件,解决就是在该目录下新建一个conf文件就行(或者单独用docker run一个网上配置))
docker images 查看镜像
docker ps -a 查看所的创建容器(包括没有开启的)
docker ps 查看开启的容器
docker start/restart/stop 容器名字(如:php-local)(docker-compose.yml 中的container_name: php-local)指定的容器名称
配置文件和项目文件在docker-compose.yml 中有挂在到宿主机(当前服务器)中,用 volumes:
然后,在挂载地址就可修改新增文件,并且,同时容器内的文件也会被修改
(注意要改变文件权限 chmod 777 文件名/)
原文件指定nginx,Dockerfile所在的目录
context: ./docker-image/nginx
生成镜像名称j及对应版本
image: nginx-local:1.11
容器名称
container_name: nginx-local
environment:
links也可以指定依赖。)
depends_on:
restart: always)
()ommand: "redis-server /data/redis.conf --requirepass just4redis")
just4redis()是redis 登录密码
如果修改了docker-compose.yml文件 直接用 docker-compose up -d 重建容器就行
docker exec -it (镜像Id或镜像name) bash
有问题的话查看docker 日志 :docker logs 容器名称(php-local)
进入redis 访问数据
(
docker exec -ti redis-local bash
redis-cli -h 172.17.96.145 -a just4redis
)
装vim
原先的是海外下载地址太慢,需要修改
mv /etc/apt/sources.list /etc/apt/sources.list.bak
echo “deb http://mirrors.163.com/debian/ jessie main non-free contrib” >/etc/apt/sources.list
echo “deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib” >>/etc/apt/sources.list
echo “deb-src http://mirrors.163.com/debian/ jessie main non-free contrib” >>/etc/apt/sources.list
echo “deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib” >>/etc/apt/sources.list
#更新安装源
apt-get update
#安装命令
apt-get install -y vim
注释:
(远方在PHPdockerfile文件中用于拉取网址上的镜像的,但目录不存在了,便删除,让他默认去拉取)
RUN sed -i ‘s/deb.debian.org/mirrors.163.com/g’ /etc/apt/sources.list
RUN sed -i ‘s/security.debian.org/mirrors.163.com/debian-security/g’ /etc/apt/sources.list
docker run -d -p 8080:80 --name nginx-local|nginx nginx
/usr/share/nginx/html# vi index.html
项目地址
/proj/console/web
nginx 日志
access_log /logs/console-access.log json;
error_log /logs/console-error.log;
sudo docker run –t –i ubuntu:15.10/bin/bash #-t标示模拟终端 -i标示在当前终端输入输出 ubuntu:15.10 标志在ubuntu仓库里面查找15.10标志的image, 最后面 /bin/bash标示执行 这个命令,这里就是获取到一个shell。