页面“内网穿透打洞”与“Mysql安装之Docker mysql”之间的差异

来自linux中国网wiki
(页面间的差异)
跳到导航 跳到搜索
 
 
第1行: 第1行:
 +
=Run the application using Docker Compose=
  
=frp=
+
==文件目录==
==info ==
 
54.153.89.195 dev.evanlinux.com
 
54.153.89.195 devshop.evanlinux.com
 
 
 
192.168.0.11
 
 
 
==install==
 
 
<pre>
 
<pre>
 +
#mkdir -p /home/data/docker-compose-mysql/mysql
 +
#mkdir -p /home/data/docker-compose-mysql/data
  
  
wget https://github.com/fatedier/frp/releases/download/v0.9.3/frp_0.30.0_linux_amd64.tar.gz
+
mkdir -p /data/apps/docker-compose-mysql/mysql
 +
mkdir -p /data/apps/docker-compose-mysql/data
 +
docker-compose-mysql]# tree .
 +
.
 +
├── data
 +
├── docker-compose.yml
 +
└── mysql
 +
    └── docker-my.cnf</pre>
  
wget https://github.com/fatedier/frp/releases/download/v0.9.3/frp_0.9.3_linux_amd64.tar.gz
+
== mysql/docker-my.cnf==
tar -zxvf frp_0.9.3_linux_amd64.tar.gz
+
<pre>
cd frp_0.9.3_linux_amd64
+
[mysqld]
  
</pre>
+
default-storage-engine=INNODB
  
==run==  
+
character-set-server=utf8mb4
<pre>
+
server-id = 100
#server
+
#default-time_zone = '+8:00'
./frps  -c  frps.ini
+
explicit_defaults_for_timestamp=true
 +
log-bin=mysql-bin
  
#client
+
max_connections = 10667
./frpc  -c frpc.ini
+
max_connect_errors = 6000
 +
open_files_limit = 65535
 +
table_open_cache = 1024
 +
max_allowed_packet = 500M
 +
binlog_cache_size = 1M
 +
max_heap_table_size = 8M
 +
tmp_table_size = 128M
  
建议线上用 screen
+
read_buffer_size = 2M
然后  ./frps -c ./frps.ini &
+
read_rnd_buffer_size = 8M
 +
sort_buffer_size = 8M
 +
join_buffer_size = 8M
 +
key_buffer_size = 256M
  
or nohup
+
thread_cache_size = 64
  
</pre>
+
query_cache_type = 1
 +
query_cache_size = 64M
 +
query_cache_limit = 2M
  
==for leanote 201911==
+
ft_min_word_len = 4
<pre>
 
#今天用的版本是0.21 on bsd  for leanote
 
  
#cat  /data/apps/frp/frps.ini
 
#/usr/bin/nohup  /data/apps/frp/frps -c /data/apps/frp/frps.ini &
 
[common]
 
bind_port = 7000
 
vhost_http_port = 9000
 
#vhost_http_port = 88
 
  
[leanote]
+
binlog_format = mixed
type = http
+
expire_logs_days = 7
auth_token = 123
 
custom_domains =t.linuxsa.org
 
  
 +
slow_query_log = 1
 +
long_query_time = 2
 +
slow_query_log_file = /var/lib/mysql/mysql-slow.log
 +
general_log = 1
 +
general_log_file = /var/lib/mysql/mysql.log
  
  
# cat  /data/apps/frp/frpc.ini
+
[client]
# /usr/bin/nohup  /data/apps/frp/frpc -c /data/apps/frp/frpc.ini &
+
default-character-set=utf8mb4
[common]
+
[mysql]
server_addr = 138.197.220.125
+
default-character-set=utf8mb4
server_port = 7000
 
auth_token = 123
 
  
[leanote]
+
</pre>
type = http
 
local_port = 9000
 
custom_domains =t.linuxsa.org
 
  
#[ssh]
+
== docker-compose.yml==
#type = tcp
+
<pre>
#local_ip = 127.0.0.1
+
version: '3.1' 
#local_port = 22
+
services:
#remote_port = 6000
+
  mysql:
 +
    image: mysql:5.7.31
 +
    #image: mysql:5.7.26
 +
    hostname: dev-hello-mysql
 +
    volumes:
 +
      - ./data/mysql:/var/lib/mysql
 +
      - ./mysql/docker-my.cnf:/etc/mysql/conf.d/docker-my.cnf
 +
#     - ./mysql/timezone:/etc/timezone
 +
    ports:
 +
      - 3306:3306
 +
    environment:
 +
      MYSQL_ROOT_PASSWORD: 4339pAss3335EOV
 +
      TZ: Asia/Shanghai
 +
    restart: always
  
  
 +
#note  这个密码不能位数太多呢 不然好多问题
 +
</pre>
  
 +
==usage==
 +
<pre>
 +
#本机访问 mysql
 +
yum install mysql -y  #client  可能是 mariadb-client
 +
mysql -uroot -p -h127.0.0.1
 +
</pre>
  
 +
=上机有是 2020的 下面的是以前的 有空要优化一下 打包不要用 centos作 容器os=
  
 +
= my dockerfile=
 +
<pre>
  
 +
cat Dockerfile
 +
#名称:
 +
#
 +
# time
 +
FROM centos
 +
MAINTAINER evan [email protected]
 +
WORKDIR /root/
 +
RUN yum -y  install wget
 +
RUN  wget http://repo.mysql.com/mysql-community-release-el7-7.noarch.rpm
 +
RUN rpm -ivh /root/mysql-community-release-el7-7.noarch.rpm
 +
RUN yum -y install  mysql-server
 +
RUN mysql_install_db --user=mysql
 +
ENV MYSQL_USER test
 +
ENV MYSQL_PASS mypassword
 +
#支持中文
 +
ENV LC_ALL  en_US.UTF-8
 +
ADD build_table.sh  /root/build_table.sh
 +
RUN chmod u+x /root/build_table.sh
 +
EXPOSE 3306
 +
ADD  run.sh  /root/run.sh
 +
RUN  chmod u+x /root/run.sh
 +
CMD  /root/run.sh
  
  
 +
cat  build_table.sh
 +
#!/bin/bash
 +
mysqld_safe &
 +
sleep 3
 +
mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASS' WITH GRANT OPTION; "
 +
mysql -e "create database evans"
 +
mysql -e "create table evans.name(name char(20) not null,evan int not null) DEFAULT CHARSET=utf8"
 +
mysql -e "insert into evans.evan values('韦子虚',36),('丽莉',33)"
  
  
 +
cat run.sh
 +
#!/bin/bash
 +
mysqld_safe
  
#other
 
  
#cat frps.ini
 
[common]
 
bind_port = 7000
 
vhost_http_port = 9000
 
#vhost_http_port = 88
 
  
[leanote]
 
type = http
 
auth_token = 123
 
custom_domains =t.linuxsa.org
 
  
  
#cat frpc.ini
+
docker build -t evan886/centos-mysql:v1  .
[common]
+
server_addr = 138.197.220.125
+
Successfully built 3c3879c54e3b
server_port = 7000
+
Successfully tagged evan886/centos-mysql:v1
auth_token = 123
 
  
[leanote]
 
type = http
 
local_port = 9000
 
custom_domains =t.linuxsa.org
 
  
  
#[ssh]
 
#type = tcp
 
#local_ip = 127.0.0.1
 
#local_port = 22
 
#remote_port = 6000
 
  
 +
[root@localhost mysql]# docker images
 +
REPOSITORY            TAG                IMAGE ID            CREATED            SIZE
 +
evan886/centos-mysql  v1                  3c3879c54e3b        8 minutes ago      867MB
  
  
#other test
 
  
#今天用的版本是0.21
+
docker push evan886/centos-mysql:v1
# frps.ini
 
[common]
 
bind_port = 7000
 
vhost_http_port = 80
 
#subdomain_host = evanlinux.com
 
  
[web]
+
#测试 不加-d
type = http
+
  docker run -p 3309:3306 --name mysql -e MYSQL_ROOT_PASSWORD=mypassword --privileged=true mysql
custom_domains = t.linuxsa.org
 
auth_token = 123
 
  
 +
  docker run -p 3309:3306 --name mysql -e MYSQL_ROOT_PASSWORD=mypassword  -d --privileged=true mysql
  
# frpc.ini
 
[common]
 
server_addr = 45.77.26.200
 
server_port = 7000
 
auth_token = 123
 
  
[web]
+
如果想拉我的镜像
type = http
+
docker pull evan886/centos-mysql:v1
local_port = 8080
 
custom_domains = t.linuxsa.org
 
  
打开  t.linuxsa.org
 
#这个跳转 应试是docker的问题 因为 8888的cmdb不会跳的
 
最终跳到 http://192.168.0.10:8080/
 
 
</pre>
 
</pre>
  
==frp开胃菜==
+
=测试=
 
<pre>
 
<pre>
cat  frpc.ini
+
#我的母机是192.168.50.206
# frpc.ini
+
mysql  -uroot -p -h 192.168.50.206  -P3309
[common]
+
Enter password:
server_addr = 54.153.89.195
+
Welcome to the MariaDB monitor.  Commands end with ; or \g.</pre>
server_port = 7000
 
auth_token = 123
 
  
[web]
 
type = http
 
#local_port = 80
 
local_port = 8000
 
  
 
+
==完整测试==
cat frps.ini
 
# frps.ini
 
[common]
 
bind_port = 7000
 
vhost_http_port = 80
 
#subdomain_host = evanlinux.com
 
 
 
[web]
 
type = http
 
custom_domains = evanlinux.com
 
#custom_domains = *.evanlinux.com
 
auth_token = 123
 
 
 
visa  evanlinux.com 就是内网的8000tomcat应用
 
 
 
</pre>
 
 
 
== 进阶==
 
=== custom_domains多个域名===
 
==== frps====
 
 
<pre>
 
<pre>
# frps.ini
+
docker pull evan886/centos-mysql:v1
[common]
 
bind_port = 7000
 
vhost_http_port = 80
 
#subdomain_host = evanlinux.com
 
  
[web]
+
root@debian:~/mysql# docker  images
type = http
+
REPOSITORY            TAG                IMAGE ID            CREATED            SIZE
custom_domains = evanlinux.com
+
evan886/centos-mysql  v1                  3c3879c54e3b        17 hours ago        867MB
#custom_domains = *.evanlinux.com
 
auth_token = 123
 
  
[web02]
+
#运行 加-v 会有问题
vhost_http_port = 80
+
docker run -p 3309:3306 --name mysql -e MYSQL_ROOT_PASSWORD=mypassword -v /data/mysql:/var/lib/mysql  -d --privileged=true 3c3879c54e3b
type = http
 
auth_token = 123
 
custom_domains = devshop.evanlinux.com
 
  
 +
root@debian:~/mysql# docker  ps  -a
 +
CONTAINER ID        IMAGE              COMMAND                  CREATED            STATUS                    PORTS              NAMES
 +
34ce2a368d7d        3c3879c54e3b        "/bin/sh -c /root/ru…"  4 minutes ago      Exited (0) 4 minutes ago                      mysql
 +
root@debian:~/mysql#  docker  logs 34ce2a368d7d
 +
180411 03:00:34 mysqld_safe Logging to '/var/log/mysqld.log'.
 +
180411 03:00:34 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
 +
180411 03:00:35 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
  
[web03]
 
vhost_http_port = 80
 
type = http
 
auth_token = 123
 
custom_domains = dev.evanlinux.com
 
 
#https
 
[web02s]
 
vhost_https_port = 443
 
type = https
 
auth_token = 123
 
custom_domains = devread.com
 
  
 
</pre>
 
</pre>
  
==== frpc====
+
=用官方的=
 
<pre>
 
<pre>
# frpc.ini
 
[common]
 
server_addr = 54.153.89.195
 
server_port = 7000
 
auth_token = 123
 
  
[web]
+
docker pull mysql:5.7
type = http
+
#config and run
#local_port = 80
+
docker run -p 3307:3306 --restart 策略名称 -v 宿主机数据目录:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql密码 -d 镜像ID
local_port = 8000
 
#subdomain = devshop
 
  
[web02]
+
docker run -p 3307:3306 --restart always -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=2240800 -d 75576f90a779
type = http
 
local_port = 5080
 
custom_domains = devshop.evanlinux.com
 
 
 
 
 
[web03]
 
type = http
 
local_port = 7080
 
custom_domains = dev.evanlinux.com
 
 
 
#https
 
[web02s]
 
type = https
 
local_port = 443
 
custom_domains = devread.com
 
 
</pre>
 
</pre>
  
====dns====
+
=注意 =
devshop.evanlinux.com
 
dev.evanlinux.com
 
记得A到 frps 机器上去
 
 
 
 
 
==== cus 80 eg ====
 
 
<pre>
 
<pre>
#request nginx has  dev.evanlinux.com  devshop.evanlinux.com
+
运行启动
# frpc.ini
+
映射mysql外网访问端口: 3307
[common]
+
docker run -p 3307:3306 --restart 策略名称 -e MYSQL_ROOT_PASSWORD=mysql密码 -d 镜像ID
server_addr = 54.153.89.195
+
docker run -p 3307:3306 --restart always -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=224099 -d 75576f90a779
server_port = 7000
 
auth_token = 123
 
  
[web]
+
Docker容器自启动策略
type = http
+
no 不自动重启容器. (默认value)
#local_port = 80
+
always 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
local_port = 8000
+
on-failure 容器发生error而退出(容器退出状态不为0)重启容器
#subdomain = devshop
+
unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
 +
</pre>
 +
==将MySQL的数据存到宿主机上==
 +
<pre>docker run -p 3307:3306 --restart 策略名称 -v 宿主机数据目录:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql密码 -d 镜像ID
  
[web02]
+
docker run -p 3307:3306 --restart always -v /home/mysql-db-backup:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=rootroot -d 5709795eeffa</pre>
type = http
 
#local_port = 5080
 
local_port = 80
 
custom_domains = devshop.evanlinux.com
 
  
  
[web03]
+
==使用本地的MySQL配置文件==
type = http
+
<pre>docker run -p 3307:3306 --restart 策略名称 -v 宿主机数据目录:/var/lib/mysql -v 宿主机数据库配置文件目录:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=mysql密码 -d 镜像ID
#local_port = 5080
 
local_port = 80
 
custom_domains = dev.evanlinux.com
 
  
 +
docker run -p 33306:3306 --restart always -v /data/mysql0:/var/lib/mysql -v /data/mysql0_conf:/etc/mysql/connf.d -e MYSQL_ROOT_PASSWORD=rootroot -d 5709795eeffa
 
</pre>
 
</pre>
  
=使用  80 端口访问=
+
 
 +
=err=
 
<pre>
 
<pre>
些时候必须使用 80 端口访问网站服务,比如微信公众号服务。将服务器端的 vhost_http_port 参数配置成 80 就可以了。
+
# err 你现在不能用套接字建立连接因为它不见了,所以可以建立一个TCP/IP连接
但是,有时候 80 端口被 apache 或 nginx 使用了,那么就要通过修改 apache 或 nginx 的配置来解决。修改配置的目的是将域名域名对应的 80 端口转发到 vhost_http_port 配置的端口上来。
+
mysql -uroot -p2240881 -P3307
 
+
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
以 nginx 为例:
+
您在 /var/spool/mail/root 中有新邮件
 
+
[root@localhost ~]# mysql -uroot -p2240881 -P3307 -h 127.0.0.1
server {
+
Welcome to the MariaDB monitorCommands end with ; or \g.
    listen      80;
 
    server_name  frp.biliyu.com;
 
 
 
    #charset koi8-r;
 
    #access_log logs/host.access.log main;
 
  
    location / {
+
https://blog.csdn.net/hjf161105/article/details/78850658 解决Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2) "
        proxy_set_header Host $host;
 
        proxy_set_header X_Real_IP $remote_addr;
 
        proxy_set_header X-Forwarded-For $remote_addr;
 
        proxy_pass http://127.0.0.1:8080;
 
    }
 
}
 
 
</pre>
 
</pre>
  
=说明=
 
<pre>
 
说明:
 
  
server_addr 公网IP
+
f4ba7ff24ae9: Waiting
server_port 服务器端口
+
ERROR: error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/e9/e9c354083de75cbcde66071c228fca267d0e946fb41a5399f58265e5a858fcb4/data?verify=1596806434-OrTgZox94HL0JXxYMfUx6j5RT8I%3D: net/http: TLS handshake timeout
local_port 本地要替换的端口
 
remote_port 替换端口(ssh连接时候改成这个端口)
 
local_port 本地http服务的端口号
 
custom_domains 有公网IP服务器的域名(必须有域名,否则无法实现http)
 
</pre>
 
=不太好用 =
 
花生壳有 linux 版本,支持内网穿透,容器跑一个就行了。
 
  
https://hsk.oray.com/download/
+
请见 [[DockerHub镜像加速]]
  
 
=see also=
 
=see also=
  
==frp系列==
+
[https://github.com/docker-library/mysql/blob/f279c9cc0d20407a2c4d9465adae6b077dcf1b51/5.6/Dockerfile docker-library/mysql 5.6/Dockerfile]
https://www.cnblogs.com/sanduzxcvbnm/category/1171545.html
 
 
 
[https://www.cnblogs.com/sanduzxcvbnm/p/8509150.html 七、利用frp 穿透到内网的http/https网站,实现对外开放]
 
 
 
 
 
[https://blog.csdn.net/Meteor_s/article/details/80996737 树莓派3B+(06):frp内网穿透ssh]
 
 
 
[https://www.oschina.net/p/nps 轻量级内网穿透代理服务器 NPS]
 
 
 
https://github.com/cnlh/nps/
 
 
 
==install config==
 
 
 
[https://github.com/fatedier/frp/blob/master/README_zh.md#%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8C%E7%BA%A7%E5%9F%9F%E5%90%8D frp官方中文文档]
 
 
 
https://www.oschina.net/p/frp
 
 
 
[https://blog.csdn.net/yp090416/article/details/85090273 linux、centos7 安装 frp 搭建高性能内网穿透服务]
 
 
 
[https://www.jianshu.com/p/e8e26bcc6fe6 使用frp实现内网穿透]
 
 
 
[https://www.hi-linux.com/posts/25686.html 推荐一款很好用的内网穿透工具 FRP]
 
 
 
[https://blog.csdn.net/LunaW/article/details/50426873 n2n内网穿透神器(一条命令实现穿透)(linux,安卓,win,openwrt全介绍)]
 
 
 
[https://mritd.me/2017/01/21/use-frp-for-internal-network-wear/ 利用 frp 进行内网穿透]
 
 
 
[http://www.biliyu.com/article/1778.html 使用 frp 实现内网穿透]
 
 
 
[https://www.jianshu.com/p/57658825ff0d frp 内网穿透]
 
 
 
[http://www.voidcn.com/article/p-bykweqdk-bot.html n2n内网穿透打洞部署全过程 + nginx公网端口映射]
 
 
 
[https://blog.csdn.net/u013144287/article/details/78589643 十分钟教你配置frp实现内网穿透]
 
 
 
[https://www.jianshu.com/p/e8e26bcc6fe6 使用frp实现内网穿透]
 
 
 
[https://www.v2ex.com/t/406714 内网穿透都有哪些解决方案]
 
 
 
[https://blog.csdn.net/qq_29300341/article/details/79109544 内网穿透工具frp使用说明]
 
 
 
[https://blog.csdn.net/pwb1994001/article/details/80769838 Linux 配置frp,实现内网穿透]
 
 
 
[https://maoji.github.io/frp-setup/ frp内网穿透配置]
 
 
 
[https://blog.csdn.net/zengd0/article/details/79522253 搭建frp实现内网穿透]
 
  
[https://blog.csdn.net/zbgjhy88/article/details/55289785 自建服务器解决外网访问内网(内网穿透【端口映射】)问题的方法总结]
+
[https://itbilu.com/linux/docker/EyP7QP86M.html MySQL 官方Docker镜像的使用]
  
[https://sunnyrx.com/2016/10/21/simple-to-use-frp/ 使用frp实现内网穿透]
+
[https://www.jianshu.com/p/5c18a4b01dcc?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation Docker部署安装MySQL5.7]
  
=https=
+
[https://www.jyoryo.com/index.php/archives/89.html MySQL 5.6 Linux Debian/Ubuntu源码编译安装 LNMP之MySQL]
[https://blog.csdn.net/u011644312/article/details/79903651 letsencrypt + frp + iris 实现https内网穿透]
 
  
[https://ycfung.github.io/2018/05/20/rasp1/ 搭建 frp 内网穿透并启用 HTTPS 访问]
+
[https://blog.csdn.net/sunyuhua_keyboard/article/details/81540012 docker 安装mysql 8]
  
 +
[https://blog.csdn.net/xiaolyuh123/article/details/72629300 Docker运行Mysql实例]
  
 +
[https://www.jianshu.com/p/7a01046b3c54 Docker部署(二):MySQL数据库]
  
 +
[https://www.cnblogs.com/atuotuo/p/9402132.html#_labelTop 修改 Docker-MySQL 容器的 默认用户加密规则]
  
  [[category:ops]]
+
[https://blog.csdn.net/wxb880114/article/details/82219720 阿里云ECS-使用docker官方镜像安装mysql服务]
 +
  [[category:ops]]  [[category:mysql]] [[category: container]]

2020年10月13日 (二) 09:10的版本

Run the application using Docker Compose

文件目录

#mkdir -p /home/data/docker-compose-mysql/mysql
#mkdir -p /home/data/docker-compose-mysql/data


mkdir -p /data/apps/docker-compose-mysql/mysql
mkdir -p /data/apps/docker-compose-mysql/data
docker-compose-mysql]# tree .
.
├── data
├── docker-compose.yml
└── mysql
    └── docker-my.cnf

mysql/docker-my.cnf

[mysqld]

default-storage-engine=INNODB

character-set-server=utf8mb4
server-id = 100
#default-time_zone = '+8:00'
explicit_defaults_for_timestamp=true
log-bin=mysql-bin

max_connections = 10667
max_connect_errors = 6000
open_files_limit = 65535
table_open_cache = 1024
max_allowed_packet = 500M
binlog_cache_size = 1M
max_heap_table_size = 8M
tmp_table_size = 128M

read_buffer_size = 2M
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 8M
key_buffer_size = 256M

thread_cache_size = 64

query_cache_type = 1
query_cache_size = 64M
query_cache_limit = 2M

ft_min_word_len = 4


binlog_format = mixed
expire_logs_days = 7

slow_query_log = 1
long_query_time = 2
slow_query_log_file = /var/lib/mysql/mysql-slow.log
general_log = 1
general_log_file = /var/lib/mysql/mysql.log


[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

docker-compose.yml

version: '3.1'  
services:
  mysql:
    image: mysql:5.7.31
    #image: mysql:5.7.26
    hostname: dev-hello-mysql
    volumes:
      - ./data/mysql:/var/lib/mysql
      - ./mysql/docker-my.cnf:/etc/mysql/conf.d/docker-my.cnf
#      - ./mysql/timezone:/etc/timezone
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: 4339pAss3335EOV
      TZ: Asia/Shanghai
    restart: always


#note  这个密码不能位数太多呢 不然好多问题

usage

#本机访问 mysql 
yum install mysql -y  #client  可能是 mariadb-client
mysql -uroot -p -h127.0.0.1

上机有是 2020的 下面的是以前的 有空要优化一下 打包不要用 centos作 容器os

my dockerfile


cat Dockerfile 
#名称:
#
# time
FROM centos
MAINTAINER evan [email protected]
WORKDIR /root/
RUN yum -y  install wget
RUN  wget http://repo.mysql.com/mysql-community-release-el7-7.noarch.rpm
RUN rpm -ivh /root/mysql-community-release-el7-7.noarch.rpm
RUN yum -y install  mysql-server
RUN mysql_install_db --user=mysql
ENV MYSQL_USER test
ENV MYSQL_PASS mypassword
#支持中文
ENV LC_ALL  en_US.UTF-8
ADD build_table.sh  /root/build_table.sh
RUN chmod u+x /root/build_table.sh
EXPOSE 3306
ADD  run.sh  /root/run.sh
RUN  chmod u+x /root/run.sh
CMD  /root/run.sh


cat  build_table.sh 
#!/bin/bash
mysqld_safe &
sleep 3
mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASS' WITH GRANT OPTION; "
mysql -e "create database evans"
mysql -e "create table evans.name(name char(20) not null,evan int not null) DEFAULT CHARSET=utf8"
mysql -e "insert into evans.evan values('韦子虚',36),('丽莉',33)"


cat run.sh 
#!/bin/bash
mysqld_safe





docker build -t evan886/centos-mysql:v1  .
 
Successfully built 3c3879c54e3b
Successfully tagged evan886/centos-mysql:v1




 [root@localhost mysql]# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
evan886/centos-mysql   v1                  3c3879c54e3b        8 minutes ago       867MB



docker push evan886/centos-mysql:v1

#测试 不加-d
  docker run -p 3309:3306 --name mysql -e MYSQL_ROOT_PASSWORD=mypassword --privileged=true mysql

  docker run -p 3309:3306 --name mysql -e MYSQL_ROOT_PASSWORD=mypassword  -d --privileged=true mysql


如果想拉我的镜像
docker pull evan886/centos-mysql:v1

测试

#我的母机是192.168.50.206
mysql  -uroot -p -h 192.168.50.206  -P3309
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.


完整测试

docker pull evan886/centos-mysql:v1

root@debian:~/mysql# docker  images 
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
evan886/centos-mysql   v1                  3c3879c54e3b        17 hours ago        867MB

#运行 加-v 会有问题
docker run -p 3309:3306 --name mysql -e MYSQL_ROOT_PASSWORD=mypassword -v /data/mysql:/var/lib/mysql  -d --privileged=true 3c3879c54e3b

root@debian:~/mysql# docker  ps  -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
34ce2a368d7d        3c3879c54e3b        "/bin/sh -c /root/ru…"   4 minutes ago       Exited (0) 4 minutes ago                       mysql
root@debian:~/mysql#  docker  logs 34ce2a368d7d
180411 03:00:34 mysqld_safe Logging to '/var/log/mysqld.log'.
180411 03:00:34 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
180411 03:00:35 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended


用官方的


 docker pull mysql:5.7
#config and run 
docker run -p 3307:3306 --restart 策略名称 -v 宿主机数据目录:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql密码 -d 镜像ID

docker run -p 3307:3306 --restart always -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=2240800 -d 75576f90a779

注意

运行启动
映射mysql外网访问端口: 3307
docker run -p 3307:3306 --restart 策略名称 -e MYSQL_ROOT_PASSWORD=mysql密码 -d 镜像ID
docker run -p 3307:3306 --restart always -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=224099 -d 75576f90a779

Docker容器自启动策略
no 不自动重启容器. (默认value)
always 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
on-failure 容器发生error而退出(容器退出状态不为0)重启容器
unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器

将MySQL的数据存到宿主机上

docker run -p 3307:3306 --restart 策略名称 -v 宿主机数据目录:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql密码 -d 镜像ID

docker run -p 3307:3306 --restart always -v /home/mysql-db-backup:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=rootroot -d 5709795eeffa


使用本地的MySQL配置文件

docker run -p 3307:3306 --restart 策略名称 -v 宿主机数据目录:/var/lib/mysql -v 宿主机数据库配置文件目录:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=mysql密码 -d 镜像ID

docker run -p 33306:3306 --restart always -v /data/mysql0:/var/lib/mysql -v /data/mysql0_conf:/etc/mysql/connf.d -e MYSQL_ROOT_PASSWORD=rootroot -d 5709795eeffa


err

# err  你现在不能用套接字建立连接因为它不见了,所以可以建立一个TCP/IP连接
 mysql -uroot -p2240881 -P3307 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
您在 /var/spool/mail/root 中有新邮件
[root@localhost ~]# mysql -uroot -p2240881 -P3307  -h 127.0.0.1
Welcome to the MariaDB monitor.  Commands end with ; or \g.

https://blog.csdn.net/hjf161105/article/details/78850658 解决Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2) "


f4ba7ff24ae9: Waiting ERROR: error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/e9/e9c354083de75cbcde66071c228fca267d0e946fb41a5399f58265e5a858fcb4/data?verify=1596806434-OrTgZox94HL0JXxYMfUx6j5RT8I%3D: net/http: TLS handshake timeout

请见 DockerHub镜像加速

see also

docker-library/mysql 5.6/Dockerfile

MySQL 官方Docker镜像的使用

Docker部署安装MySQL5.7

MySQL 5.6 Linux Debian/Ubuntu源码编译安装 LNMP之MySQL

docker 安装mysql 8

Docker运行Mysql实例

Docker部署(二):MySQL数据库

修改 Docker-MySQL 容器的 默认用户加密规则

阿里云ECS-使用docker官方镜像安装mysql服务