docker安装mysql起名

依次状态的义如下: 
LISTEN – 侦听来自远方TCP端口的总是要; 
SYN-SENT -在殡葬连接要后待匹配的连续要; 
SYN-RECEIVED – 在收到和殡葬一个连续要后等候对连年要的认同; 
ESTABLISHED- 代表一个开辟的接连,数据可以传递给用户; 
FIN-WAIT-1 – 等待远程TCP的连中断请求,或先前之连中断请求的确认;
FIN-WAIT-2 – 从远程TCP等待连接中断请求; 
CLOSE-WAIT – 等于本地用户发来的接连中断请求; 
CLOSING -等远程TCP对连日中断的认可; 
LAST-ACK – 等待原来发朝远程TCP的总是中断请求的认同; 
TIME-WAIT -等待丰裕的岁月以保证远程TCP接收及连年中断请求的认同; 
CLOSED – 没有其余连接状态;

运作容器

runoob@runoob:~/mysql$ docker run -p 3306:3306 --name mymysql -v $PWD/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/logs:/logs -v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
21cb89213c93d805c5bacf1028a0da7b5c5852761ba81327e6b99bb3ea89930e
runoob@runoob:~/mysql$ 

指令表达:

  • -p 3306:3306:用容器的3306端口映射到主机的3306端口

  • -v
    $PWD/conf/my.cnf:/etc/mysql/my.cnf:
    以主机当前目录下的conf/my.cnf挂载到容器的/etc/mysql/my.cnf

  • -v $PWD/logs:/logs:拿主机当前目录下的logs目录挂载到容器的/logs

  • -v
    $PWD/data:/mysql_data:
    以主机当前目录下之data目录挂载到容器的/mysql_data

  • -e MYSQL_ROOT_PASSWORD=123456:开首化root用户的密码

参照:

使用mysql镜像

 

笔记列表

   Brian

  153***2799@qq.com

风行官方MySQL(5.7.19)的docker镜像在创即刻映射的布置文件目录有所不同,在此记录并享受给大家:

官原文:

The MySQL startup configuration is specified in the
file /etc/mysql/my.cnf, and that file in turn includes any files found
in the /etc/mysql/conf.d directory that end with .cnf. Settings in
files in this directory will augment and/or override settings
in /etc/mysql/my.cnf. If you want to use a customized MySQL
configuration, you can create your alternative configuration file in a
directory on the host machine and then mount that directory location
as /etc/mysql/conf.d inside the mysql container.

约莫意思是说:

MySQL(5.7.19)的默认配置文件是 /etc/mysql/my.cnf
文件。如果想如果于定义配置,提出于 /etc/mysql/conf.d 目录中开创 .cnf
文件。新建的公文可以随意起名,只要保证后缀名是 cnf
即可。新建的文本被的配置起好挂 /etc/mysql/my.cnf 中之配备起。

具体操作:

先是需创设将要映射到容器被的目录和.cnf文件,然后重新创容器

# pwd
/opt
# mkdir -p docker_v/mysql/conf
# cd docker_v/mysql/conf
# touch my.cnf
# docker run -p 3306:3306 --name mysql -v /opt/docker_v/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d imageID
4ec4f56455ea2d6d7251a05b7f308e314051fdad2c26bf3d0f27a9b0c0a71414

一声令下表明:

  • -p 3306:3306:将容器的3306端口映射到主机的3306端口
  • -v
    /opt/docker_v/mysql/conf:/etc/mysql/conf.d:
    将主机/opt/docker_v/mysql/conf目录挂载到容器的/etc/mysql/conf.d
  • -e MYSQL_ROOT_PASSWORD=123456:起先化root用户之密码
  • -d: 后台运行容器,并再次来到容器ID
  • imageID: mysql镜像ID

查看容器运行状态

# docker ps
CONTAINER ID IMAGE          COMMAND          ... PORTS                    NAMES
4ec4f56455ea c73c7527c03a  "docker-entrypoint.sh" ... 0.0.0.0:3306->3306/tcp   mysql

深深精通TCP连接的自由: 

方法二、docker pull mysql

查找Docker Hub上的mysql镜像

runoob@runoob:/mysql$ docker search mysql
NAME                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                    MySQL is a widely used, open-source relati...   2529      [OK]       
mysql/mysql-server       Optimized MySQL Server Docker images. Crea...   161                  [OK]
centurylink/mysql        Image containing mysql. Optimized to be li...   45                   [OK]
sameersbn/mysql                                                          36                   [OK]
google/mysql             MySQL server for Google Compute Engine          16                   [OK]
appcontainers/mysql      Centos/Debian Based Customizable MySQL Con...   8                    [OK]
marvambass/mysql         MySQL Server based on Ubuntu 14.04              6                    [OK]
drupaldocker/mysql       MySQL for Drupal                                2                    [OK]
azukiapp/mysql           Docker image to run MySQL by Azuki - http:...   2                    [OK]
...

此我们拉取官方的镜像,标签为5.6

runoob@runoob:~/mysql$ docker pull mysql:5.6

等下载好后,我们不怕好在地面镜像列表里翻及REPOSITORY为mysql,标签为5.6之镜像。


脚是实际的事例截图:

查看容器启动状态

runoob@runoob:~/mysql$ docker ps 
CONTAINER ID    IMAGE         COMMAND                  ...  PORTS                    NAMES
21cb89213c93    mysql:5.6    "docker-entrypoint.sh"    ...  0.0.0.0:3306->3306/tcp   mymysql

Docker 安装 PHP

Docker 安装
Tomcat

 图2  TCP四糟挥手关闭连接

  • 其次赖握手:
    服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位皆为1同时,将认同序号(Acknowledgement
    Number)设置也客户的I S N加1以.即X+1。

TCP采用四涂鸦挥手关闭连接要图2所显示。

咦是窗口?

(3)服务器B关闭及客户端A的连接,发送一个FIN给客户端A。 

2. TCP的流控过程(滑动窗口)

Sequence number(顺序号)

(1)Server端收到HTTP请求而GET之后,构造响应音信,其中辅导网页内容,在server端的HTTP层发送音信200
OK->server端的TCP层; 
(2)server端的TCP层对新闻包举行分片传输; 
(3)client端的TCP层对吸收至之逐条音信包分片回送响应; 
(4)client端的TCP层每一次收到部分且会师就此ACK确认,之后server继续传输,client继续认同,直到完成响应音讯之所有分片之后,Server发送组合HTTP响应包
200 O
K,此时于client端的音跟踪中才足以来得HTTP 200 OK的新闻包

(1)第一不良握手:建立连接时,客户端A发送SYN包(SYN=j)到劳动器B,并登SYN_SEND状态,等待服务器B确认。

起名 1

SYN(synchronous建立协同)

 

关连接:

 

  • 先是不成握手:
    客户端发送一个TCP的SYN标志地点1之包指明客户打算连接的服务器的端口,以及初步序号X,保存于廊坊的连串号(Sequence
    Number)字段里。

TCP(Transmission Control Protocol) 传输控制协议

祈求1 TCP三赖握手建立连接  起名 2

Acknowledge number(确认号码)

2,net.ipv4.tcp_syncookies

相似服务器都会师装net.ipv4.tcp_syncookies=1来防护SYN
Flood攻击。假若一个用户为服务器发送了SYN报文后突然死机或掉线,那么服务器在起SYN+ACK应答报文后是不可以接受客户端的ACK报文的(第三差握手不能就),这种状态下服务器端一般会重试(再度发送SYN+ACK给客户端)并伺机一段时间后废弃那些不形成的连日,这段时间的尺寸我们叫SYN
提姆eout,一般的话这时刻是分钟之数据级(大约为30秒-2分钟)。

 

这么些处在SYNC_RECV的TCP连接称为半连,并蕴藏在本的半连接队列中,在基础收到对端发送的ack包时会合找半一连队列,并拿可的requst_sock音信存储到成功两遍于握手的连天的队中,然后去此半连。大量SYNC_RECV的TCP连接会促成半连接队列溢出,这样持续之连接起请求会叫基本直接扔,这即是SYN
Flood攻击。

 

能行得通防范SYN Flood攻击的手腕之一,就是SYN Cookie。SYN Cookie原理由D.
J. Bernstain与 埃里克(Eric) Schenk发明。SYN
Cookie是针对性TCP服务器端的老三涂鸦握手协议作一些修改,专门用来制止SYN
Flood攻击的一律种手段。它的原理是,在TCP服务器收到TCP SYN包并赶回TCP
SYN+ACK包时,不分配一个专程的数据区,而是基于这SYN包总计出一个cookie值。在接TCP
ACK包时,TCP服务器在因那一个cookie值检查是TCP
ACK包的合法性。假如官方,再分配专门的数据区举行处理将来的TCP连接。

 

观测服务上SYN_RECV连接个数为:7314,对于一个高并发连接的报导服务器,这么些数字较正常。

客户端TCP状态迁移:
CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED
服务器TCP状态迁移:
CLOSED->LISTEN->SYN收到->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED

位码即tcp标志位,有6种标示:

http://hi.baidu.com/raycomer/item/944d23d9b502d13be3108f61

(4)客户端A发回ACK报文确认,并以认可序号设置也收到序号加1。 

1.这么些图包含两局部信息:TCP的老三软握手(方框中的情) (SYN, (SYN+ACK),
ACK)

起名 3

TCP/IP协议中,TCP协议提供保险的连续服务,采纳三潮握手建立一个连连,如图1所突显。

 CP的总是的拆迁要发送四单保险,因而称四蹩脚挥手(four-way
handshake)。客户端或服务器均只是积极发起挥手动作,在socket编程中,任何一方执行close()操作即可出挥手操作。

ACK(acknowledgement 确认)

是因为TCP连接是清一色双工的,由此每个方向都得独立举行倒闭。这几个法是当一正值就其的数额发送任务后就能发送一个FIN来歇这么些趋势的连年。收到一个 FIN只表示这等同趋势达成未曾数量流动,一个TCP连接于收受一个FIN后遵照能发送数据。首先举行倒闭的同一正用执行积极关闭,而别一样在尽被动关闭。

(2)服务器B收到这FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占据一个序号。 

连接起时,各端分配一块缓冲区用来储存接收的数量,并以缓冲区的尺寸发送给此外一样端

形成三不善握手,客户端与服务器起始传送数据。

理解:窗口和滑动窗口
TCP的流量控制

**由于TCP连接是清一色双工的,因而每个方向还要独立开展关闭。这标准是当一着完成她的数据发送任务后虽可以发送一个FIN来终止这么些趋势的连接。收到一个
FIN只代表霎时同一方向及尚未数据流动,一个TCP连接于收到一个FIN后仍是可以发送数据。首先举行关闭的平等正在以尽积极关闭,而此外一样正尽被动关闭。
TCP协议的连是都双工连接,一个TCP连接在双向的读写通道。 
简易说来是
“先关读,后关写”,一共用四独号。以客户机发起关闭连接为例:
1.服务器读通道关闭
2.客户机写通道关闭
3.客户机读通道关闭
4.服务器写通道关闭
关门行为是于发起方数据发送完之后,给对方发一个FIN(finish)数据段。直到接收及对方发送的FIN,且对方接收了收取确认ACK之后,双方的数目通信完全终止,过程遭到老是接到都待回到确认数据段ACK。
详尽过程:
    
先是等级  
客户机发送了数据后,向服务器发送一个
FIN数据段,体系号为i
   
1.服务器收到
FIN(i)继,再次来到确认段ACK,连串号为i+1闭馆服务器读通道
    2.客户机收到
ACK(i+1)后,关客户机写通道
   (此时,客户机仍会经过读通道读取服务器的多寡,服务器仍能透过写通道写多少)
    
仲等级 服务器发送完数据之后,向客户机发送一个FIN数据段,连串号为j;
   
3.客户机收到
FIN(j)后,重返确认段ACK,体系号为j+1关闭客户机读通道
    4.服务器收到
ACK(j+1)后,关服务器写通道
即是正统的TCP关闭多只级次,服务器和客户机都可以倡导关闭,完全对如。
FIN标识是透过发送最终一块数据平常设置的,标准的例子中,服务器还于发送数据,所以只要等交发送完的时刻,设置FIN(此时可称之为TCP连接处
一半关闭状态,因为数量论可于被动关闭一大方向积极关闭方传送)。假设以服务器收到FIN(i)时,已经没数据要发送,可以在回ACK(i+1)的早晚就是装FIN(j)标识,这样即使相当给得统一第二步和老三步。朗诵《Linux网络编程》关闭TCP连接段,作以下笔记:**

 

剩余缓冲区上空的数目叫做窗口

转自:(http://www.cnblogs.com/Jessy/p/3535612.html)

http://course.ccniit.com/CSTD/Linux/reference/files/018.PDF

PSH(push传送)

(2)第二不行握手:服务器B收到SYN包,必须认可客户A的SYN(ACK=j+1),同时协调吧发送一个SYN包(SYN=k),即SYN+ACK包,此时劳动器B进入SYN_RECV状态。

 

  1. TCP的数目传 ([TCP segment of a reassembled
    PUD])可以望,server是以数据TCP层对信息包举办分片传输

接收方发送的认可音信碰到蕴藏了和睦剩余的缓冲区尺寸

TCP的南阳结构:
源端口 16位
对象端口 16各
序列号 32位
掉应序号 32个
TCP头长度 4位
reserved 6位
控制代码 6员
窗口大小 16位
偏移量 16位
校验和 16位
选项  32位(可选)
诸如此类我们得出了TCP许昌的顶小尺寸,为20字节

RST(reset重置)

 

(1)客户端A发送一个FIN,用来关闭客户A到服务器B的多少传送。 

TCP是主机对主机层的传输控制协议,提供保险的连接服务,接纳两次握手确认建立一个连连:

SYN_RECV 

服务端收到建立连接的SYN没有接到ACK包的下处在SYN_RECV状态。有个别单相关网安排:

 

FIN(finish结束)

TCP状态

TCP状态如下图所示:

想必有硌乱?再看看那多少个时序图

 

 

上边看下我们一般相比关心的老三栽TCP状态

TCP使用窗口机制举办流量控制

起名 4

TCP的TIME_WAIT和Close_Wait状态

 

面试时看到应聘者简历中写会网络,TCP编程,我常叩一个问题,TCP建立连接要几糟握手?95%以上之应聘者都可以报答对凡3赖。问TCP断开连接需要几潮握手,70%的应聘者能报答对凡4不良通讯。再问问CLOSE_WAIT,TIME_WAIT是什么状态,怎么有的,对服务有什么影响,怎么样清除?有一部分同桌即使回不达到来。不是自家看细节,而是以简报为主底前端服务器上,必须来力量处理各个TCP状态。比如总括在本厂的一致玉前端机上高峰时TCP连接的景色,总括命令:

 

 

  1. netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’  

 

 

结果:

 

而外ESTABLISHED,可以看看连接数相比多之多少个状态是:FIN_WAIT1,
TIME_WAIT, CLOSE_WAIT,
SYN_RECV和LAST_ACK;下边的稿子就随即几单状态的来条件、对系的熏陶与处理情势举行简短描述。

 

1,net.ipv4.tcp_synack_retries :INTEGER

默认值是5

对于远端的连天要SYN,内核会发送SYN + ACK数据报,以确认收到上一个
SYN连接要求包。这是所谓的老三糟握手( threeway
handshake)机制的第二单步骤。这里决定内核在舍连接此前所送出底 SYN+ACK
数目。不应高于255,默认值是5,对许于180秒左右光阴。平常大家不对那个价进行修改,因为大家想TCP连接不要以有时的抛开包要望洋兴叹建立。

参见wireshark抓包,实测的逮捕包结果并从未严刻按照挥手时序。我估计是时刻间隔太不够造成。

肯定号:其数值等于发送方的出殡序号
+1(即接收方期望接收的下一个连串号)。

CLOSE_WAIT

提倡TCP连接关闭的平正在称client,被动关闭的一模一样正称server。被动关闭的server收到FIN后,但切莫暴发ACK的TCP状态是CLOSE_WAIT。出现这种情景相似依然出于server端代码的题材,假如您的服务器上起大量CLOSE_WAIT,应该假若考虑检讨代码。

立连接: 

起名 5 

(3)第三不佳握手:客户端A收到服务器B的SYN+ACK包,向劳动器B发送确认包ACK(ACK=k+1),此包发送了,客户端A和服务器B进入ESTABLISHED状态,完成三不佳握手。

 

老三涂鸦握手

  • 老三不成握手.
    客户端再一次发送确认包(ACK)
    SYN标志位也0,ACK标志位为1.而把服务器发来ACK的序号字段+1,放在规定字段中发送给对方.并且在数段放写ISN的+1

 

URG(urgent紧急)

TIME_WAIT

因TCP协议定义之3潮握手断开连接规定,发起socket主动关闭的同一正值
socket将跻身TIME_WAIT状态。TIME_WAIT状态将持续2独MSL(马克斯(Max) Segment
Lifetime),在Windows下默认为4分钟,即240秒。TIME_WAIT状态下的socket不克吃回收利用.
具体境况是对于一个处理大量欠连接的服务器,假诺是由于服务器主动关闭客户端的连年,将招致服务器端存在大气底介乎TIME_WAIT状态的socket,
甚至比处于Established状态下之socket多之几近,严重影响服务器的拍卖能力,甚至耗尽可用之socket,停止服务。

 

缘何用TIME_WAIT?TIME_WAIT是TCP协议用以保证为重新分配的socket不会晤面临以前留的延期重发报文影响之机制,是必备的逻辑保证。

 

和TIME_WAIT状态有关的类别参数有相似由3个,本厂设置如下:

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_fin_timeout = 30

 

net.ipv4.tcp_fin_timeout,默认60s,减小fin_timeout,减少TIME_WAIT连接数量。

 

net.ipv4.tcp_tw_reuse = 1表示被重用。允许用TIME-WAIT
sockets重新用于新的TCP连接,默认为0,表示关闭;

net.ipv4.tcp_tw_recycle = 1表示被TCP连接中TIME-WAIT
sockets的连忙回收,默认为0,表示关闭。

为好描述,我让此TCP连接的一样端起名叫吧Client,给另外一端起名叫也Server。上图描述的凡Client主动关闭的进程,FTP协议中就是这么的。假如一旦讲述Server主动关闭的历程,只要互换描述过程被的Server和Client就可了,HTTP协议便是这么的。

叙述过程:
Client调用close()函数,给Server发送FIN,请求关闭连接;Server收到FIN之后为Client再次来到确认ACK,同时关闭读通道(不晓得就错过看一下shutdown和close的异样),也就是说现在不能重由这连续上读取东西,现在read重回0。此时Server的TCP状态转化为CLOSE_WAIT状态。
Client收到针对友好之FIN确认后,关闭 写通道,不再向连着形容副其它数据。
接下Server调用close()来关闭连接,给Client发送FIN,Client收到后给Server回复ACK确认,同时Client关闭读通道,进入TIME_WAIT状态。
Server接收及Client对友好之FIN的确认ACK,关闭写通道,TCP连接转化为CLOSED,也不怕是关闭连接。
Client在TIME_WAIT状态下假若候太特别数量段生存期的个别倍增,然后才进去CLOSED状态,TCP协议关闭连接过程彻底终结。

以上就是是TCP协议关闭连接的进程,现在说一下TIME_WAIT状态。
打者可以见到,主动发起关闭连接的操作的平等正值将达TIME_WAIT状态,而且是状态而保障马克斯imum
Segment Lifetime的少数倍增时间。为何而这么做而不是从来进入CLOSED状态?

故有次:
一致、保证TCP协议的全双工连接可以可靠关闭
其次、保证本次连续的双重数据段从网络被消失

优先说第一触及,假如Client直接CLOSED了,那么由IP协议的不可靠性或者是此外网络由,导致Server没有吸收Client最终回复的ACK。那么Server就谋面在逾期下连续发送FIN,此时由Client已经CLOSED了,就招来不至与重发的FIN对应的总是,最终Server就会晤接收RST而非是ACK,Server就会以为是连连错误将问题报于高层。这样的情况即便非汇合造成数丢失,可是也导致TCP协议不称保险连续的要求。所以,Client不是一向进去CLOSED,而是使保TIME_WAIT,当还接FIN的时节,可以保证对方接收ACK,最终对的关连接。

再者说第二沾,假诺Client间接CLOSED,然后以再次于Server发起一个初连,我们无可知确保是新连和刚刚关门的总是的端口号是不同的。也就是说有或新连和镇连接的端口号是一致的。一般的话不会面出啊问题,可是依旧来特别情状出现:假而新连和早已关门的老连接端口号是千篇一律的,假如前方无异糟连续的一点数据如故留于网被,这些延迟数据在确立新连之后才抵达Server,由于新连和老连接的端口号是一样的,又盖TCP协议判断不同连接的基于是socket
pair,于是,TCP协议便以为不行延迟的数是属于新连的,这样就是跟真的新连的数额包有混淆了。所以TCP连接还要在TIME_WAIT状态等2加倍MSL,这样好保这次连接的所有数据都从网被消失。

各个协商都是前人千锤百炼后取得的规范,规范。从细节中都能感受及精细和审慎。每一趟深远都发生跟一个发,精妙。

召开个喜的友善。

起名 6

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图