Docker 是一个开源的利用容器引擎,基于 Go 语言 并听从 Apache2.0 协定开源。
Docker 能够让开发者打包他们的利用以及依赖包到一个轻量级、可移植的容器中,而后公布到任何风行的 Linux 机器上,也能够实现虚拟化。
容器是齐全应用沙箱机制,相互之间不会有任何接口(相似 iPhone 的 app),更重要的是容器性能开销极低。
本文所有操作都在centos7下面操作
装置与启动
# 一、装置Docker
curl -sSL https://get.daocloud.io/docker | sh # 应用国内 daocloud 一键装置命令:
docker -v # 查看Docker版本
# 二、启动与进行Docker
# *systemctl* 命令是零碎服务管理器指令,它是 service 和 chkconfig 两个命令组合。
systemctl start docker # 启动docker
systemctl stop docker # 进行docker
systemctl restart docker # 重启docker
systemctl status docker # 查看docker状态
systemctl enable docker # 开机启动
docker info # 查看docker概要信息
docker --help # 查看docker帮忙文档
权限问题解决
操作镜像时可能会呈现一些权限谬误
# 报错: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/
sudo gpasswd -a username docker #将普通用户username退出到docker组
newgrp docker #更新docker组
# 报错: is not in the sudoers file
# su 只是切换了root身份,但Shell环境依然是普通用户的Shell;此时pwd,发现工作目录依然是普通用户的工作目录
# su - 连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会呈现PATH环境变量谬误。此时pwd,工作目录变成root的工作目录了。
su - # 切换root用户
visudo #切记,此处没有vi和sudo之间没有空格。开端退出:your_user_name ALL=(ALL) ALL 。保留,这样就把本人退出了sudo组,能够应用sudo命令了
镜像
docker images # 列出镜像。这些镜像都是存储在Docker宿主机的/var/lib/docker目录下
docker search 镜像名称 # 搜寻镜像,网络中查找须要的镜像
docker pull centos:7 # 拉取镜像
docker rmi $IMAGE_ID # 删除指定镜像
docker rmi `docker images -q` # 删除所有镜像
# 设置Docker镜像减速
vi /etc/docker/daemon.json # 如果该文件不存在就手动创立
# 增加内容: {"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]}
# {"registry-mirrors":["https://hub.daocloud.io"]}
# 之后重新启动服务:
systemctl daemon-reload
systemctl restart docker
容器
# 一、查看容器
docker ps # 查看正在运行容器
docker ps –a # 查看所有的容器(启动过的历史容器)
docker ps –l # 查看最初一次运行的容器
docker ps -f status=exited # 查看进行的容器
# 二、创立与启动容器
# 创立容器命令:docker run
# -i:示意运行容器
# -t:示意容器启动后会进入其命令行。退出这两个参数后,容器创立就能登录进去。即调配一个伪终端。
# --name :为创立的容器命名。
# -v:示意目录映射关系(-v参数 后边为 宿主机目录:容器目录),能够应用多个-v做多个目录或文件映射。留神:最好做目录映射,在宿主机上做批改,而后共享到容器上。
# -d:在run前面加上-d参数,则会创立一个守护式容器在后盾运行(这样创立容器后不会主动登录容器,如果只加-i -t两个参数,创立后就会主动进去容器)。
# -p:示意端口映射(-p参数 后边为 宿主机端口:容器端口)。能够应用多个-p做多个端口映射
docker run -it --name=mycentos centos:7 /bin/bash # 交互式容器
docker run -id --name=mycentos1 centos:7 # 守护式容器
docker exec -it container_name (或者 container_id) /bin/bash # 登录守护式容器形式
# 应用exit命令 退出以后容器
# 三、进行与启动容器
docker stop $CONTAINER_NAME/ID # 进行正在运行的容器:
docker start $CONTAINER_NAME/ID # 启动已运行过的容器:
# 四、文件拷贝
docker cp 须要拷贝的文件或目录 容器名称:容器目录
docker cp 容器名称:容器目录 须要拷贝的文件或目录
# 五、目录挂载
# 咱们能够在创立容器的时候,将宿主机的目录与容器内的目录进行映射,这样咱们就能够通过批改宿主机某个目录的文件从而去影响容器。
# 创立容器 增加-v参数 后边为 宿主机目录:容器目录
# 如果你共享的是多级的目录,可能会呈现权限有余的提醒。这是因为CentOS7中的平安模块selinux把权限禁掉了,咱们须要增加参数 --privileged=true 来解决挂载的目录没有权限的问题
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos2 centos:7
# 六、查看容器IP地址
docker inspect mycentos2 # 查看容器运行的各种数据
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos2 # 查看容器IP地址
# 七、删除容器
docker rm $CONTAINER_ID/NAME # 删除指定的容器。留神,只能删除进行的容器
docker rm `docker ps -a -q` # 删除所有容器:
部署利用
1 MySQL部署
docker pull mysql # 拉取mysql镜像
docker images # 查看镜像
# 创立MySQL容器
docker run -di --name pinyougou_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
# -p 代表端口映射,格局为 宿主机映射端口:容器运行端口
# -e 代表增加环境变量 MYSQL_ROOT_PASSWORD是root用户的登陆密码
# 进入mysql容器
docker exec -it pinyougou_mysql /bin/bash
mysql -u root -p # 登陆mysql
2 tomcat部署
docker pull tomcat:7-jre7 # 拉取tomcat镜像
# 创立tomcat容器
docker run -di --name=pinyougou_tomcat -p 9000:8080 -v /usr/local/myhtml:/usr/local/tomcat/webapps --privileged=true tomcat:7-jre7
# -v示意地址映射
部署web利用。批改cas零碎的配置文件,批改数据库连贯的url
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
p:driverClass="com.mysql.jdbc.Driver"
p:jdbcUrl="jdbc:mysql://172.17.0.6:3306/pinyougoudb?characterEncoding=utf8"
p:user="root"
p:password="123456" />
测试:地址栏输出:http://192.168.247.135:9000/cas/login
3 Nginx部署
# 拉取Nginx镜像
docker pull nginx
# 创立Nginx容器
docker run -di --name=pinyougou_nginx -p 80:80 nginx /bin/bash
# 测试Nginx。 浏览器地址栏输出: http://192.168.247.135
# 从容器拷贝配置文件到宿主机
docker cp pinyougou_nginx:/etc/nginx/nginx.conf nginx.conf
编辑nginx.conf,增加反向代理配置
upstream tomcat-cas {
server 172.17.0.7:8080;
}
server {
listen 80;
server_name passport.pinyougou.com;
location / {
proxy_pass http://tomcat-cas;
index index.html index.htm;
}
}
# 将批改后的配置文件拷贝到容器
docker cp nginx.conf pinyougou_nginx:/etc/nginx/nginx.conf
# 重新启动容器
docker restart pinyougou_nginx
# 设置域名指向 ,host文件:192.168.247.135 passport.pinyougou.com
# 浏览器测试:http://passport.pinyougou.com/cas/login
4 Redis部署
# 拉取Redis镜像
docker pull redis
# 创立Redis容器
docker run -di --name=pinyougou_redis -p 6379:6379 redis
# 客户端测试,在你的本地电脑命令提示符下,用window版本redis测试:redis-cli -h 192.168.247.135
备份与迁徙
# 容器保留为镜像
docker commit pinyougou_nginx mynginx
# pinyougou_nginx是容器名称
# mynginx是新的镜像名称
# 此镜像的内容就是你以后容器的内容,接下来你能够用此镜像再次运行新的容器
# 镜像备份
docker save -o mynginx.tar mynginx
# -o 输入到的文件
# 执行后,运行ls命令即可看到打成的tar包
# 镜像复原与迁徙
# 首先咱们先删除掉mynginx镜像
# 而后执行此命令进行复原
docker load -i mynginx.tar
# -i 输出的文件
# 执行后再次查看镜像,能够看到镜像曾经复原
发表回复