一,Docker安装 (参考一篇文章 除了ssh,其他验证好用 感谢jamesbing.)
安装docker
https://www.docker.com/community-edition
拉取远程镜像 centos:latest
docker pull centos:latest
该命令会去远程镜像库拉取,拉取成功后使用命令查看
docker images
创建容器
docker run --namecentosCon1-i -t-p 5001:22centos:latest/bin/bash
docker run参数详解:
1.--name --表示容器名称
2.-i-- 以交互模式运行容器,通常与 -t 同时使用
3.-t-- 为容器重新分配一个伪输入终端,通常与 -i 同时使用
4.-p-- 指定容器暴露的端口
5.5001:22-- 表示将宿主机5001端口映射到容器中暴露的22端口
6.centos:latest-- docker images 列表中的 REPOSITORY:TAG
7./bin/bash--表示使用bash
提交当前容器为新的镜像或覆盖原镜像
1.退出当前容器
exit
2. 查到被我们修改的容器ID
docker ps -a
3.提交当前容器为新的镜像或覆盖原镜像
docker commit{容器ID} {镜像名称}
说明:
1.{镜像名称}既可以为新的名称也可以直接覆盖原始镜像
2.docker run 会根据镜像创建一个容器,如果没有手动执行 docker rm {容器ID},该容器将会一直存在,你可以启动、停止、登录容器;命令如下:
2.1 启动:docker start{容器名称}
2.2 停止:docker stop{容器名称}
2.3 强制停止:docker kill{容器ID}
2.4 登录容器:docker attach{容器名称} --容器必须启动; 一个容器支持多个attach,这将会出现屏幕共享效果
3.使用docker commit后,我们刚才配置的带有sshd的容器将生成新镜像或覆盖原始镜像,我们又可以基于它来创建新的容器
二,Mysql安装
这里使用的docker的pull
$ docker pull mysql:latest
拉下来以后大可以按照官方的说明无脑启动,但是外部无法访问,所以绑定端口:
$ docker run --name mysqladv -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
试着用客户端连接,成功了,查询mysql.user表发现允许从任何地方用root访问,这特么也太不安全了!
果断连接到bash:
$ docker exec-it mysql bash
Login to Mysql
$ mysql -u root -p
create database adv default charset utf8 COLLATE utf8_general_ci;
这一步浪费了很长时间,主要是Docker小白。不知道用哪一个IP,Localhost和inspect中的都用了,都不好使。
外部连接Docker数据库
mysql -h 192.168.99.100:53306 -u root -p