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
————————————————
Docker系列03-容器Docker镜像的使用的更多相关文章
- docker系列四之docker镜像与容器的常用命令
docker镜像与容器的常用命令 一.概述 docker的镜像于容器是docker中两个至关重要的概念,首先给各位读者解释一下笔者对于这两个概念的理解.镜像,我们从字面意思上看,镜子里成像,我们人 ...
- docker 批量删除容器和镜像
docker 批量删除容器和镜像 1,删除单个镜像或者容器 docker rmi 镜像ID/镜像名字:TAG docker rm 容器ID/容器名字 1.停止所有的container,这样才能 ...
- Docker系列02: 容器生命周期管理 镜像&容器
A) Docker信息1. 查看docker运行状态 systemctl status docker docker.service - Docker Application Container Eng ...
- Docker系列(二)镜像下载、操作容器、镜像导入导出等操作
一.镜像操作 列出镜像 $sudo docker images 从dockerhub检索image $docker search image_name 下载image $docker pull ima ...
- Docker系列(三):Docker自定义容器镜像
将容器编程镜像: docker commit [repo:tag] 网上有这句话:当我们在制作自己的镜像的时候,会在container中安装一些工具.修改配置,如果不做commit保存 起来,那么co ...
- Docker系列03—Docker 基础入门
本文收录在容器技术学习系列文章总目录 1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. ...
- Docker系列10—容器编排工具Docker Compose详解
本文收录在容器技术学习系列文章总目录 1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置 ...
- Docker系列01—容器的发展历程---Docker的生态圈
本文收录在容器技术学习系列文章总目录 Docker 和容器技术的发展可谓是日新月异,本文试图以全局的视角来梳理一下 docker 目前的生态圈.既然是概览,所以不会涉及具体的技术细节. Docker ...
- docker入门(二)容器与镜像的理解
10张图带你深入理解Docker容器和镜像 申明:此篇文章是转载的(原文地址http://dockone.io/article/783),今天意外发现已经有人转载了(复制了),希望大家关注原创 原本打 ...
- docker入门(二)容器与镜像的关系
[编者的话]本文用图文并茂的方式介绍了容器.镜像的区别和Docker每个命令后面的技术细节,能够很好的帮助读者深入理解Docker. 这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(co ...
随机推荐
- AntV G2 图表tooltip重命名
在做数据可视化的过程中,遇到了一个问题,就是给图表tooltip重命名. 在研究后,发现了三种方法: 方法1:一般情况下,可以在给chart绑定数据源时,添加scale配置,并在scale配置中设置别 ...
- UIImageView与基本动画gif
UIImageView 作用:[用来进行图片展示] UIImageView UIImageView初始化 initWithImage:如果设置frame,图片的size就是 imageView的siz ...
- Linux中Postfix反病毒和垃圾邮件(十)
amavisd-new amavisd-new呼叫器是一个连接MTA和内容检测工具(诸如病毒扫描工具和SpamAssassin)的高性能接口程序,使用perl语言写成.它一般通过SMTP.ESMTP或 ...
- python 2.7导入模块问题
有如下结构的python文件 base |----pkg1 |----__init__.py |----add.py |----pkg2 |----__init__.py |----call_func ...
- LeetCode--300. 最长递增子序列
题目:给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4 ...
- 【JS】324- JS中的内存管理(中高级前端必备)
前言 像C语言这样的底层语言一般都有底层的内存管理接口,比如 malloc()和free()用于分配内存和释放内存.而对于JavaScript来说,会在创建变量(对象,字符串等)时分配内存,并且在不再 ...
- JAVA中SPI机制
之前研究dubbo的时候就很好奇,里面各种扩展机制,期间也看过很多关于SPI的机制,今日有缘再度看到有文章总结,故记录一下, 首先了解一下 JAVA中SPI简单的用法 可参考这篇文章,https:// ...
- PHP7 break和continue的区别
break:结束当前 for,foreach,while,do-while 或者 switch 结构的执行. continue:在循环结构用用来跳过本次循环中剩余的代码并在条件求值为真时开始执行下一次 ...
- springcloud-微服务架构基础
一 前言 学习微服务要从基础的架构学起,首先你要有个微服务的概念才能学习对吧!!如果你都不知道啥是微服务,就一头扎进去学习,你自己也觉得自己也学不会对吧.本篇文章主要让大家快速了解基础的架构分格,以便 ...
- 《Java基础知识》Java静态内部类、匿名内部类、成员式内部类和局部内部类
内部类可以是静态(static)的,可以使用 public.protected 和 private 访问控制符,而外部类只能使用 public,或者默认. 成员式内部类 在外部类内部直接定义(不在方法 ...