-
基本指令
-
docker version
和docker 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
- 首先查找php相关的docker镜像
-
自己搭建一个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中的内容了。
网友评论