docker server 容器连接sql_Docker使用指南
一、Docker安装
- 在Ubuntu系统下安装:
apt-get install docker
- 在Fedora/CentOS系统下安装:
yum install docker
dnf install docker # Fedora 25+
- 在SUSE系统下安装:
zypper install docker
二、Docker容器
- 首先启动Docker
# 启动Docker
systemctl start docker
# 设置开机自启动,可选
systemctl enable docker
- 启动Docker测试容器
docker run "hello-world"
- 在启动容器时,如果使用的镜像在本地不存在,会尝试从网络上获取。
- 在一般情况下,启动Web服务的容器,使用以下命令:
# -d:daemon,使容器在后台运行
# -p:port,指定容器的端口,这里是将容器的80端口映射到主机的8001端口
docker run -d -p 8001:80 "image_name"
- 查看容器运行情况
docker ps
- Docker会为容器分配一个Container ID和一个Container Name,Name可以在运行时通过
-name
自行指定,这两个可以用来标识容器。 - 需要停止容器时,使用以下命令:
docker stop "container_name"
# 或使用ID查找
docker stop "container_id"
三、Docker镜像
- Docker容器是运行的Docker镜像实例,一般情况下,我们需要制作自己的Docker镜像。
- Docker镜像的制作依赖于Dockerfile,我们稍后在讨论Dockerfile的编写,这里假定我们有一个编写好的Dockerfile。
- 下面的命令将在当前路径查找Dockerfile并构建一个名为“image_name”的镜像。
docker build -t "image_name" ./
- 在构建过程中需要在网络上下载来源镜像,可能需要一段时间。
- 如果Dockerfile中的命令都正确结束(Exit code 0),那么Docker镜像的构建也将顺利完成,我们可以通过下面的命令查看我们的所有镜像:
docker images
- 我们还可以导出我们制作好的Docker镜像,下面的命令将image_name镜像导出为image_name.tar
docker save "image_name" > image_name.tar
- 在另一台机器上,我们不需要网络就可以导入并使用该镜像:
docker load < image_name.tar
四、Dockerfile
- Dockerfile本质上是一组命令集合,用于自动化构建镜像,下面以几个实例来说明Dockerfile的编写方法:
- 实例一:LAMP(Linux+Apache+MySQL+PHP)环境配置
# 来源镜像,一般可以使用标准的系统或者带有各种环境的系统
# 显然这里使用的是标准的Ubuntu 14.04系统
FROM ubuntu:14.04
# 镜像作者
MAINTAINER wrlu
# 刷新日期
ENV REFRESHED_AT 2018-08-05
# 设定字符集
ENV LANG C.UTF-8
# RUN命令用于执行系统命令
# 因为需要自动化安装,所以最好通过-y命令跳过确认
# 更新APT软件源
RUN apt-get update -y
# 安装MySQL
RUN apt-get -y install mysql-server
# 安装Apache
RUN apt-get -y install apache2
# 安装PHP5
RUN apt-get -y install php5 libapache2-mod-php5
RUN apt-get install -yqq php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
# 删除Apache2列出目录配置
RUN sed -i 's/Options Indexes FollowSymLinks/Options None/' /etc/apache2/apache2.conf
# COPY命令可以复制文件,但是似乎不能递归复制文件
COPY IncludeAirline/* /var/www/html/
COPY IncludeAirline/airlines/* /var/www/html/airlines/
# 删除默认的主页
RUN rm /var/www/html/index.html
# 复制启动脚本
COPY start.sh /root/start.sh
RUN chmod +x /root/start.sh
# 设置启动目录以及启动脚本
ENTRYPOINT cd /root; ./start.sh
# 设置需要暴露的端口
EXPOSE 80,3306
- 本例中还有一个启动脚本
start.sh
,用于导入数据库,编写如下:
#!/bin/bash
# 启动后延时
sleep 1
# 启动Apache服务器
/etc/init.d/apache2 start
# 启动MySQL数据库
find /var/lib/mysql -type f -exec touch {} ; && service mysql start
# 定义SQL文件路径
sqlfile=/var/www/html/includeAirline.sql
if [ -f $flagfile ]; then# 修改MySQL的密码mysqladmin -u root password "root"# 登录MySQL并导入SQL文件执行mysql -uroot -proot < $sqlfile# 删除SQL文件rm -f $sqlfile
fi
# 此处注意,如果命令执行完后脚本退出
# 则Docker容器也会因为没有前台应用运行而中止
# 所以这里使用一个前台命令来保活Docker容器
tail -f /var/log/apache2/error.log
- 实例二:PHP环境配置:
# 来源镜像,自带Apache+PHP环境
FROM php:7.0-apache
MAINTAINER tl
ENV REFRESHED_AT 2018‐08‐03
ENV LANG C.UTF‐8
# ADD命令在COPY命令的基础上,具有自动解包tar的功能
ADD web_tired.tar /var/www/html/
EXPOSE 80
- 实例三:LTMJ(Linux+Tomcat+MySQL+JSP)环境配置
FROM ubuntu:16.04
MAINTAINER wrlu
ENV REFRESHED_AT 2018-08-05
ENV LANG C.UTF-8
RUN apt-get update -y
RUN apt-get -y install mysql-server
# 安装wget,因为Docker提供的镜像是最小镜像,所以用到的其他工具需要自行安装
RUN apt-get -y install wget
# 安装Java 8
RUN apt-get -y install openjdk-8-jre
# 下载Tomcat 8服务器
RUN wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz
# 解压tar.gz
RUN tar -xzf apache-tomcat-8.5.32.tar.gz -C /root
RUN mv /root/apache-tomcat-8.5.32 /root/tomcat
# 删除默认页面
RUN rm -rf /root/tomcat/webapps/*
# 拷贝war文件
COPY CAAC-SQL-Injection.war /root/tomcat/webapps/
COPY wafwtf.sql /root/
COPY start.sh /root/start.sh
RUN chmod +x /root/start.sh
ENTRYPOINT cd /root; ./start.sh
# Tomcat使用8080端口,不同于Apache
EXPOSE 8080
- 启动脚本如下:
#!/bin/bash
sleep 1
find /var/lib/mysql -type f -exec touch {} ; && service mysql start
chmod +x /root/tomcat/bin/startup.sh
# 启动Tomcat服务器
/root/tomcat/bin/startup.sh
sqlfile=/root/wafwtf.sql
if [ -f $flagfile ]; thenmysqladmin -u root password "root"mysql -uroot -proot < $sqlfilerm -f $sqlfile
fi
# 容器保活
tail -f /root/tomcat/conf/server.xml
docker server 容器连接sql_Docker使用指南相关推荐
- docker server 容器连接sql_Docker 容器的网络连接
文章首发于公众号<程序员果果> 地址:https://mp.weixin.qq.com/s/DzF-ZwaY4QtlgM32I5wybg 一.Docker 容器的网络基础 docker0( ...
- docker server 容器连接sql_docker 容器连接 host的sql server失败
报错内容::"A network-related or instance-specific error occurred while establishing a connection to ...
- Docker多容器连接-以Nginx+PHP为例
Docker提供了多个容器直接访问的方法,最简单的方式是直接使用端口映射-p参数指定映射的端口或者-P映射所有端口,多个容器直接通过网络端口进行访问. 但网络端口映射方式并不是Docker中连接多个容 ...
- 快速入门:使用 Docker 运行 SQL Server 容器映像
Choose your command shell BashPowerShellCmd 适用对象:SQL Server(仅限 Linux)Azure SQL 数据库 Azure SQL 数据仓库 并行 ...
- 【MySQL】记录 Navicat连接 docker mysql 容器,备份docker mysql 注意事项
文章目录 Navicat连接 docker mysql 容器 定时任务备份 docker mysql ,解决 备份数据库为空 问题 Navicat连接 docker mysql 容器 确保 登录 用户 ...
- 53.Azure中CentOS的Docker里安装运行SQL Server容器
大家熟悉SQL Server可以安装在Windows系统上,我也介绍了SQL Server可以安装在LInux上,那么今天我将给大家介绍SQL Server安装在Docker上成为容器快速运行起来 首 ...
- 如何连接sql托管实例_如何使用Windows托管的文件共享来支持SQL Server容器
如何连接sql托管实例 In a previous article, Automate Delivery of SQL Server Production Data Environments Usin ...
- 使用 Docker 运行 SQL Server 容器映像 在Windows操作系统上,重设置密码和操作数库
快速入门:使用 Docker 运行 SQL Server 容器映像 2020/09/07 V O G M Choose your command shell 适用于: 是SQL Server(所有支持 ...
- Docker入门 - 005 Docker 容器连接
Docker 容器连接 前面我们实现了通过网络端口来访问运行在docker容器内的服务.下面我们来实现通过端口连接到一个docker容器 网络端口映射 我们创建了一个 python 应用的容器. do ...
最新文章
- 交流电流变换器 : SCT1013 特性测试
- 解决VMware—MAC冲突问题
- TENSORFLOW GUIDE: EXPONENTIAL MOVING AVERAGE FOR IMPROVED CLASSIFICATION
- c语言中lookup函数功能,Lookup函数详解
- 数值的加减会改变python中id,在python中调用Nan值并更改为数字
- VS2017 15.8第二个预览版本提升了对CPU Profiling和F#的支持
- 前端学习(1669):前端系列实战课程之半透明拖拽思路
- STL之函数对象和谓词
- VBOX下安装RHEL5.4增强工具失败的解决办法
- 小程序开发教程 微信小程序视频教程
- ol3 加载天地图服务
- hdmi tv 的edid_HDMI之EDID分析
- Google Pay 初步集成
- 热炒了的《消防设施操作员》,想报考却为何冷中带静?
- laravel-excel使用(老猫包子店的故事)
- Docker+Consul+Registrator实现服务注册与发现
- 循迹智能小车 循黑线 智能小车 红外循迹传感器 单片机
- 吃鸡显示服务器资源不足,win7系统玩吃鸡提示系统资源不足无法完成请求的服务如何解决...
- 双色球python十种算法_13种最有效的推算双色球方法
- 编码质量评估-编码视频效果测试场景归纳
热门文章
- python setdefault,Python笔记setdefault用法
- 回调函数自定义传参_koroFileHeader:一个用于生成文件头部注释和函数注释的插件...
- matlab系统的根轨迹,实验五 利用MATLAB绘制系统根轨迹
- QPS和并发数,这次给你说清楚
- gitlab数据迁移
- 人工智能论坛_诚邀共享 | 2020人工智能医疗产业前瞻论坛
- 想转行软件测试,简历怎么包装成1年工作经验的测试工程师
- linux 定时每天执行php,linux下使用cronjob定时执行php脚本
- 中one_气场不比BBA差,续航里程远、加速快的理想ONE值得买吗?
- php unset 静态变量,php如何删除静态变量