Docker系列03-容器Docker镜像的使用
Docker镜像的使用
前两个章节,介绍了容器的相关基础知识,这章我们介绍镜像的简单使用,镜像hub里面有来自于全世界贡献的各种镜像,包括一些入门和学习练手的镜像,今天我们使用的正式其中一个用于学习练习的镜像(https://github.com/docker-training/webapp)
下载启动容器
#先把镜像pull下来
docker pull training/webapp
#查看当前镜像列表
docker images
#可以看到我们刚才下载的webapp
REPOSITORY TAG IMAGE ID CREATED SIZE
training/webapp latest 6fae60ef3446 4 years ago 349MB
#运行webapp实例
#-d是后台运行
#-P是实例网络映射到本机,因为这个webapp是会监听tcp端口,加上这个参数容器里面的监听tcp端口跟本机的tcp端口,这样我们就直接在本机访问对应的端口就可以跟容器实例监听的端口建立连接
docker run -d -P training/webapp python app.py
#查看运行实例情况
docker ps -a
#返回信息
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5da522ffe229 training/webapp "python app.py" 2 minutes ago Up 2 minutes 0.0.0.0:1024->5000/tcp laughing_pike
#从返回的信息可以看到,容器里面监听的5000端口映射到本机的1024端口,我们试试访问本机的1024端口看看
curl http://127.0.0.1:1024/
#返回
Hello world!
进入容器环境
上面的例子是在外部访问容器,我们试试进入容器环境里面看看具体情况。
#查看当前在运行的容器实例列表
docker ps -a
#返回信息
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5da522ffe229 training/webapp "python app.py" 8 minutes ago Up 8 minutes 0.0.0.0:1024->5000/tcp laughing_pike
#我们要进入的容器实例ID是 5da522ffe229
#使用exec命令,同时运行bash,-it是交互命令终端
docker exec -it 5da522ffe229 /bin/bash
#运行之后,我们会发现,命令行终端已经发生变化,进入了实例 5da522ffe229 里面
root@5da522ffe229:/opt/webapp#
#运行一下netstat看看监听情况
netstat -lnp
#看到了,我们之前运行的webapp监听了5000的内部端口
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN -
#我们试着运行访问5000端口,提示 bash: curl: command not found
#因为我们进入了容器的隔离环境,还没有装curl
curl http://127.0.0.1:5000/
#我们先安装curl
apt-get update; apt install -y curl
#安装成功之后,再运行
curl http://127.0.0.1:5000/
#这次可以成功返回信息
Hello world!
#退出当前容器环境,命令行提示又回到本机了
ctrl+d
其他使用功能
#查看指定容器实例的log日志
docker logs -f 5da522ffe229
#查看指定容器实例的top
docker top 5da522ffe229
#查看指定容器的端口信息
docker port 5da522ffe229
#查看指定容器的配置信息
docker inspect 5da522ffe229
————————————————
最新文章
- 基于Fragment的百度地图框架的使用
- Solaris 自动挂载
- ABAP 数据字典中的参考表和参考字段的作用
- HTML标记之a标签
- 如何使用DDMS
- [vb.net]判断窗体是否已打开
- SoapUI-x64(app:url请求参数)
- 遭遇Asp.Net长文件名下载的问题和解决办法
- 插件笔记——dataTables使用说明
- VC++ 在两个文件互相包含时会出现的错误
- UNIX标准
- Ext-JS-Modern-Demo 面向移动端示例
- C语言数据结构基础学习笔记——基础线性表
- python grib气象数据可视化
- Crack相关
- spring总结之三(依赖注入)
- 将数组A中的内容和数组B中的内容进行交换。(数组一样大)
- BZOJ5368:[PKUSC2018]真实排名(组合数学)
- spring下Junit_jdbc回滚demo
- SpringBoot静态资源目录
热门文章
- AntV G2 图表tooltip重命名
- iOS开发经常用到的国外网站,让我们接轨国外的最新技术吧!
- [TimLinux] JavaScript 元素动态显示
- BZOJ [ZJOI2007]矩阵游戏(二分图匹配)
- CoderFocers-620C
- 将项目部署到github的方法
- 【简明翻译】Hibernate 5.4 Getting Started Guide 官方入门文档
- Python的re模块,正则表达式书写方法
- java基础集合简介List/Vector(三)上
- 【搞定Jvm面试】 面试官:谈谈 JVM 类加载过程是怎样的?