执行docker pull training/webapp 下载一个简单的web应用镜像,并执行docker images查看
执行docker run -d -P training/webapp python app.py启动此容器
Ports这一列信息显示了容器里运行的webapp使用端口号 tcp 5000被映射到了主机的端口32770,这个端口号32770是随机生成,可以使用-p参数来强制指定。
需要说明一下-P和-p的区别。
-P, --publish-all Publish all exposed ports to random ports
-P会将所有容器里运行应用程序之后产生的端口号全部映射成随机端口号。
-p, --publish list Publish a container's port(s) to the host
-p 在你清楚知道应用程序产生的端口号之后,可以自行指定映射关系。
我们再用-p参数启动一次,指定容器内的应用程序5000端口映射至宿主机的80端口:
docker run -d -p 80:5000 training/webapp python app.py
此时访问宿主机的http://IP:80和http://IP:32770都能看到同样的web页面。
随机生成的容器名称看着别扭,为了方便看也方便写指令,重命名一下容器名:docker rename Container_ID(or Container Name) New_name
docker logs 查看程序运行日志:(加-f 参数持续滚动输出)
查看容器内的进程 docker top Container_ID(or Container Name)
留意到信息有显示的PID和PPID,和宿主机上的PID是有什么对应关系呢
可以对比发现,PID显示的是容器内的进程在宿主机上的PID,上图中即为容器内运行的python进程PID;PPID显示的是容器内进程在宿主机上的父进程pid,也就是docker在启动运行这个容器时所产生的containerd-shim进程。
显示容器运行的底层信息:docker inspect Container_ID(or Container Name)
还是有很多很有用的底层信息可以看的。
停止容器 docker stop Container_ID(or Container Name)
已经停止的容器,我们可以使用命令 docker start 来启动,docker restart来重启。
已停掉的容器,可以使用docker rm来删除。
系统里曾经启动运行过的所有容器可以在/var/lib/docker/containers/查看。
docker rm执行的效果会删除了这里对应ID的文件夹,container ID取这些文件夹名称的前12个字符。
如果要删除所有的container,可以执行docker rm *
这个文件夹也干净了。