MrZyb Always in fear of one's own ignorance
  • 基本指令

    • docker versiondocker info:查看docker信息
    • docker search [NAME]:查找需要的镜像 例如:docker search ubuntu
    • docker pull [NAME]:把需要的镜像拉取到本地,例如: docker pull 1and1internet/ubuntu-16-apache-php-7.1
    • docker images :查看本地docker镜像,相当于 docker image ls
    • docker rmi [IMAGE ID]:删除本地的镜像,相当于 docker image rm [REPOSITORY[:TAG]]
    • docker run [IMAGE ID]:运行一个docker镜像 ,例如 docker run ubuntu:16.04 或者 docker run -p 80:80 -d nginx, 执行run指令之后会产生一个运行环境,也就是container
    • docker ps:查看本地docker正在运行的容器,相当于 docker container ls
    • docker ps -a:查看本地所有的docker容器,相当于 docker container ls --all
    • docker exec -it [CONTAINER ID] bash:进入/退出一个容器,例如 docker exec -it 3533cc374ab8 bash,在一个容器里面时可使用 ctrl+d 可直接退出当前所在的容器,或者使用 exit 指令亦可
    • docker rm [CONTAINER ID]:删除本地的docker容器
    • docker cp /path/to/file [CONTAINER ID]://path/to/nginx_server:在主机和docker之间复制文件,例如 docker cp index_test.html 3533cc374ab8://usr/share/nginx/html
    • docker commit -m description [CONTAINER ID] [NAME]:保存在docker镜像中所做的修改,例如 docker commit -m 'test' 3533cc374ab8 nginx_test,这个指令会把我们做了修改的container保存为一个新的image(镜像)
    • docker stop [CONTAINER ID] / docker start [CONTAINER ID]:关闭/运行一个容器,当我们在容器中做了更改的时候,如果没有把修改commit生成一个新的image,则只要记住我们当前做了修改的CONTAINER ID,下次开发时直接运行该CONTAINER ID即可恢复上次的开发场景
  • docker-nginx的使用

    • 先寻找合适的镜像,docker search nginx
    • 这里我们使用官方的,直接把镜像拉取到本地 docker pull nginx,docker将自动拉取最新的可用版本
    • 使用docker images可以查看到我们本地已经有了nginx这个docker镜像 docker images
    • 然后用docker run指令来运行这个image,产生一个容器 docker run
    • 这里docker run的参数意义如下:
      • -d 以守护进程的方式来运行这个镜像
      • -p 制定映射端口,将本机的8080端口与docker容器的80端口做了映射,本机可直接通过 http://localhost:8080 来访问到容器中的nginx服务
      • --name 是指定该容器的名称,容器的名称也是唯一的,docker可以把一个镜像同时以不同的容器名来运行,docker也可以通过使用docker stop [CONTAINER NAME] / docker start [CONTAINER NAME]来关闭/运行一个容器
      • -v 将本地文件夹挂在到docker容器系统下,例如:docker run -v /Users/mac/web/zybtest/:/usr/share/nginx/html -p 80:80 --name my-nginx-test -d nginx,会将本地的/Users/mac/web/zybtest/这个目录挂载到容器的/usr/share/nginx/html,也就是nginx的web目录,此时访问http://localhost:即可看到index.html中的内容this is a test file 挂载文件夹到docker
  • docker使用已有的镜像快速搭建LNMP运行环境

    • 首先查找php相关的docker镜像 docker search lnmp
    • 然后我们拉取这个镜像到我们本地 docker pull duckll/lnmp,关于具体的镜像是需要使用什么参数我们可以再docker hub的官网上查找,传送门:docker hub容器搜索
    • 拉取完成执行 docker run --name webserver -p 80:80 -v /Users/mac/web/zybtest/:/home/wwwroot/default/ -d duckll/lnmp 则可以运行这个镜像了,传送门:该镜像在 docker hub 的使用说明
    • 浏览器直接访问 http://localhost/index.php 即可看到 phpinfo() 输出的信息
    • 输入 docker exec -it [CONTAINER ID] bash 进入到容器中,ps aux 可以看到有mysql(MariaDB)、php以及nginx的服务,使用 mysql -uroot -p可访问mysql数据库(密码是root) 镜像中的服务
    • 修改mysql密码为我们自己的密码,use mysql;update user set Password = password('your passwd');flush privileges;
    • 退出之后保存我们的修改 docker commit -m 'mod mysql passwd' [CONTAINER ID] lnmp
    • 下次就可以直接使用我们保存的这个镜像来执行,保证开发环境是和上次中断时是一致的 docker images
  • 自己搭建一个lnmp服务

    docker pull ubuntu:16.04
    docker run --name ubuntu_test -it ubuntu:16.04
    apt update
    apt install php
    apt install nginx
    apt install mysql-server-5.7
    apt install vim
    vim /etc/nginx/sites-available/default (进去修改nginx配置支持转发请求到fpm)
    service nginx start
    service php7.0-fpm start
    exit
    docker commit -a your_name -m 'webserver' you_docker_container_id webserver (保存为docker镜像)
    dcoker run -i -t -p 80:80 -v /your/local/web/path/:/var/www/html/ --name webserver -d webserver (设置映射端口和挂载文件夹)

    然后在你本地的文件夹中新增index.php写上hello docker,在浏览器中访问localhost就可以访问到index.php中的内容了。

0.003658s