docker配置lamp环境笔记

基本概念

容器container本质是一个运行在主机上的进程

  • 查看运行的容器docker ps 默认只看运行中的
  • 查看所有的容器docker ps -a
  • 删除容器 docker rm 容器id[或容器名]
  • 停止一个容器 docker stop 容器id

镜像image是容器的静态概念(可以看做容器的“安装包”)

  • 查看安装的镜像docker images
  • 删除镜像docker rmi 镜像名

仓库是存放镜像的地方,跟git一样的

docker配置lamp环境笔记

镜像是打包好的运行环境,比如centos,做好这个镜像后上传到镜像库,别人就可以直接pull下来运行使用了。

安装过程记录

  1. 拉取镜像 docker pull centos
  2. 运行容器 docker run -it -p 8080:80 centos /bin/bash 该命令总是会创建一个新容器,如果要启动已经存在的容器,用docker start 容器id
  3. -i 交互模式
  4. -t 分配一个伪终端
  5. -p 主机端口:容器内的端口
  6. centos镜像名,公共受信任的镜像可以直接用镜像名,个人镜像一般是镜像库用户名/镜像名,镜像库和git库类似,如果要拉取进行的某个版本标签,可以镜像名:[Tag名]
  7. /bin/bash启动镜像后执行的命令,这里也就是启动后打开终端,然后可以使用centos的yum安装需要的包,systemctl start 启动需要的服务
  8. 但在systemctl start时报错:Failed to get D-Bus connection: Operation not permitted
  9. 这是因为D-Bus没有启动,启动选项加上 –privileged -d,并把命令从/bin/bash 修改为init
  10. init就是/usr/sbin/init, 里面会自动启动D-Bus
  11. –privileged 赋予容器更多的权限,以便正常启动D-Bus
  12. -d是进入后台运行,init并不是控制终端,执行完成后它会一直停在那个地方,无法进行命令交互,所以-d让他脱离命令行,进入后台运行
  13. 然后docker exec -it [容器id] /bin/bash 进入容器的终端,接着就可以进行使用centos的各项命令了
  14. 需要安装的内容
  15. PHP
  16. Apache
  17. MySQL
  18. openssh-server 方便通过ssh登录容器,主要是方便用sftp scp这些上传下载代码
  19. 目录共享,我们可以把docker容器中apache的工作目录挂载到主机上(运行docker的机器)的目录
  20. 增加ssh端口映射,如果run后发现需要增加端口, 比如增加ssh端口,可以这么做
  21. docker commit [容器id] [起一个名字],先把当前的容器另存为一个镜像
  22. 然后在用run启动这个镜像,并带上你添加的端口 docker run -it -p 2222:22 -p 8080:80 –privileged -d [commit时的镜像名字] init
  23. 但这里要注意,之前的端口映射也要加上 , 这里的做法只是在之前的容器上继续启动,之前镜像中安装的内容也还在,但run命令的参数和之前是一样的,增加内容而已
  24. vim /etc/ssh/sshd_config
  25. 添加PermitRootLogin yes
  26. 记得docker exec -it [容器id] /bin/bash后设置一个root密码
  27. 在上面主机和容器目录共享,在run时加上参数 -v [主机的目录]:[容器中的目录],比如 -v /workspace/ydeditor:/var/www/html