docker其实早就想学,虽然中间断断续续的看了点书,可是没办法用不到,就耽搁下来了。不是运维人员,感受把docker基本操做,dockerfile,docker compose实践一下,应该就差很少了。php
获取镜像html
docker中image能够经过docker pull 从docker仓库中获取相应的image。docker中image能够理解为类,而container能够理解为实例。运行docker run images 其实至关于new 一个实例。linux
docker pull nginx
获取nginx image。默认应该是最新的。nginx
docker images 查看全部的imagesweb
建立一个容器docker
docker run --detach --publish=80:8089 --name=webserver nginxshell
在建立时候,我报出了
Error response from daemon: driver failed programming external connectivity on endpoint webserver (cbb7c44383b08966d90bb9832d4e6ca558fdbf294891f8552a5acb2a13692587): Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE).vim
端口绑定出现了错误了。文档上是Publish a container's port(s) to the host,理解成容器80端口到宿主机8089端口。实际上,是反过来的。浏览器
docker run --detach --publish=8089:80 --name=webserver nginxbash
我再次运行时,出现contianer name重复问题。
检查问题时,使用【docker ps 显示正在运行的容器】这个命令只能看到正在运行的容器并且也看不到名字。以后使用【docker ps [-a | --all] 显示全部的容器】查看容器
最后使用【docker rm [name | id] 删除容器实例】 删除该实例从新运行。
从新运行上面命令。在浏览器运行http://localhost:8089/
docker stop 7bd7c2779951
我这里使用的是短id,也是能够中止容器
docker restart webserver
从新启动
进入容器
docker exec -it webserver bash
进入交互界面。
发现并无安装vim,是能够用安装一个vim程序。这应该就是为何会有docker export和docker impoort这个两个命令了。
运行apt-get vim 发现竟没有相应的包。
使用apt-get update。更新源,在从新安装。
文件挂载
试一下挂载宿主目录
若是容器已经运行run了,而后再给容器挂载宿主机目录。嗯...有点麻烦。
docker commit 从新生成一次镜像
docker commit --author "xx" --message "add vim software" webserver nginx:v1
而后从新run一次,挂载本身想要挂载的目录
docker run -d -p 8089:80 -v /Users/xxx/PHP:/usr/share/nginx/html --name webserver3 nginx:v1
嗯,这是可行的。
同一容器安装php
整个nginx感受仍是运行一个linux之上的。应该能够安装php试一试。
利用apt-get安装php-fpm。经过127.0.0.1:9000。这个也是能够的。
注意
运行service nginx restart 原本实在交互界面,结果容器仍是中止了。 容器中日志须要使用docker logs
删除镜像
docker rmi [name:tag | id]
最后删除镜像。删除的能够看到image都是分层构建的。
注意
镜像中若是有依赖问题,必需要按照依赖顺序删除 要删除的镜像,中有容器未被删除。必需要先删除容器,在删除镜像。
经过实际操做以后,发现了很多以前忽略的点。
用到的docker命令
docker pull [OPTIONS] image [:TAG|@DIGEST] 获取image
docker images 查看全部的images
docker run [OPTIONS] images [COMMAND] [ARGV]
[--datch -d] 是保持容器在后台持续执行
[--publish -p] 80:80 宿主机端口:容器端口
docker ps 显示正在运行的容器
docker ps [-a | --all] 显示全部的容器
还有端口对应的信息和容器名字
docker ps -a --filter name=webserver 显示正在使用的容器,过滤容器名为webserver
docker rm [name | id] 删除容器实例
docker stop [name | id] 中止容器实例
docker restart [name | id] 重启容器实例或者直接启动
docker start [name | id] 启动容器实例
docker exec -it [name | id] (unix shell) 进入交互界面
docker commit 提交容器实例成为新的image
docker logs 查看docker下面的日志信息
docker rmi 删除镜像