进入到dockerfile所在目录

docker build -t lnmp .

lnmp 是我想要的名称
开始进行

Step 1/6 : FROM ubuntu:16.04
16.04: Pulling from library/ubuntu
660c48dd555d: Downloading  28.51MB/47.76MB
4c7380416e78: Download complete
421e436b5f80: Download complete
660c48dd555d: Downloading  37.35MB/47.76MB

通过镜像生成容器

docker run -p 8082:80 -p  3308:3306 -p  23:22 -v /Users/wxx/PhpstormProjects/:/var/www/html/  --name lnmp -d 043571d93365

启动对应容器

docker start lnmp4

进入到对应的服务中

docker exec -it 478a7c3652d1 /bin/bash

查看对应的端口

docker port c759d09ba7f1

显示端口

22/tcp -> 0.0.0.0:32775
3306/tcp -> 0.0.0.0:32773
80/tcp -> 0.0.0.0:32774
8080/tcp -> 0.0.0.0:32772

在本地访问

0.0.0.0:32774或者127.0.0.1:32774

即可

这个32774端口是在未指定的情况下自动生成的,也可以在生成服务时自定义映射。

安装mysql

apt-get install mysql

安装mysql 客户端

apt-get install mysql-client

安装相关

apt-get install libmysqlclient-dev

通过docker port c759d09ba7f1 查看对应的3306端口

连接mysql会报错

Lost connection to MySQL server at 'reading initial communication packet', system error: 0

这是因为没有远程访问的权限

cd   /etc/mysql/mysql.conf.d

编辑文件

vim mysqld.cnf

找到

bind-address           = 127.0.0.1

在前面加上#

再重启mysql即可

service mysql restart

如果还不行

use mysql;
update user set host = '%' where user = 'root';

把当前ip放进去即可

把现有的环境生成一个镜像,前面是现有环境服务的id,后面是要生成的镜像名

docker commit 40264a9fb925 lnmp-nginx-php7

停止所有服务并删除

docker stop $(docker ps -q) & docker rm $(docker ps -aq)