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镜像的使用的更多相关文章

  1. docker系列四之docker镜像与容器的常用命令

    docker镜像与容器的常用命令 一.概述   docker的镜像于容器是docker中两个至关重要的概念,首先给各位读者解释一下笔者对于这两个概念的理解.镜像,我们从字面意思上看,镜子里成像,我们人 ...

  2. docker 批量删除容器和镜像

    docker 批量删除容器和镜像 1,删除单个镜像或者容器 docker  rmi  镜像ID/镜像名字:TAG docker  rm  容器ID/容器名字 1.停止所有的container,这样才能 ...

  3. Docker系列02: 容器生命周期管理 镜像&容器

    A) Docker信息1. 查看docker运行状态 systemctl status docker docker.service - Docker Application Container Eng ...

  4. Docker系列(二)镜像下载、操作容器、镜像导入导出等操作

    一.镜像操作 列出镜像 $sudo docker images 从dockerhub检索image $docker search image_name 下载image $docker pull ima ...

  5. Docker系列(三):Docker自定义容器镜像

    将容器编程镜像: docker commit [repo:tag] 网上有这句话:当我们在制作自己的镜像的时候,会在container中安装一些工具.修改配置,如果不做commit保存 起来,那么co ...

  6. Docker系列03—Docker 基础入门

    本文收录在容器技术学习系列文章总目录 1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. ...

  7. Docker系列10—容器编排工具Docker Compose详解

    本文收录在容器技术学习系列文章总目录 1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置 ...

  8. Docker系列01—容器的发展历程---Docker的生态圈

    本文收录在容器技术学习系列文章总目录 Docker 和容器技术的发展可谓是日新月异,本文试图以全局的视角来梳理一下 docker 目前的生态圈.既然是概览,所以不会涉及具体的技术细节. Docker ...

  9. docker入门(二)容器与镜像的理解

    10张图带你深入理解Docker容器和镜像 申明:此篇文章是转载的(原文地址http://dockone.io/article/783),今天意外发现已经有人转载了(复制了),希望大家关注原创 原本打 ...

  10. docker入门(二)容器与镜像的关系

    [编者的话]本文用图文并茂的方式介绍了容器.镜像的区别和Docker每个命令后面的技术细节,能够很好的帮助读者深入理解Docker. 这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(co ...

随机推荐

  1. 掘金转载-手写一个Promise

    目录 一 什么是Promise ? 二 Promises/A+ 规范 2.1 术语 2.2 基本要求 2.2.1. Promise的状态 2.2.2. Then 方法 2.3 简易版实践 2.4 进一 ...

  2. git 使用详解(5)—— get log 查看提交历史

    git log 查看 提交历史 在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log 命令查看. 接下来的例子会用我专门用于演示的 simplegit 项目,运行下面 ...

  3. HDU5919 Sequence II(主席树)

    Mr. Frog has an integer sequence of length n, which can be denoted as a1,a2,⋯,ana1,a2,⋯,anThere are ...

  4. Orleans[NET Core 3.1] 学习笔记(三)( 2 )客户端配置

    客户端配置 通过一个ClientBuilder和多个补充选项类,以编程方式配置一个用于连接Silo集群并将请求发送至Grain的客户端. 客户端配置示例: var client = new Clien ...

  5. 【JPA】映射

    [JPA]映射 转载:https://www.cnblogs.com/yangchongxing/p/10120447.html 1.@Entity注解指定实体类 2.@Id注解指定实体主键 3.@T ...

  6. django----中使用事务 数据库的三大范式

    目录 orm中的事务操作 ⑴ 原子性(Atomicity) ⑵ 一致性(Consistency) ⑶ 隔离性(Isolation) ⑷ 持久性(Durability) django中使用事务 数据库三 ...

  7. 搞懂toString()与valueOf()的区别

    一.toString() 作用:toString()方法返回一个表示改对象的字符串,如果是对象会返回,toString() 返回 “[object type]”,其中type是对象类型. 二.valu ...

  8. SVN重新定位操作流程

    因服务器其他系统需要SVN原来使用的443端口无法继续使用需要更换,服务器SVN端口已更新为8443,现将个人电脑SVN文件夹路径重新定位流程展示如下: 确定即修改成功!

  9. 一个proc预编译代码时coredump的问题分析

    最近有同事在搞编译环境迁移,碰上一个问题让我帮他看一下.    他建了一个新目录,然后把现在的代码拷过去,编译的时候发现有一个文件编译不了一执行就出现core,不知道啥情况.    我进到他的编译环境 ...

  10. 软件开发工具(第13章: Eclipse插件的使用与开发)

    一.插件简介 插件的定义(了解) 插件是一种遵循其所依附的软件的接口规范所编写出来的程序. 插件实际上是对原有软件的扩展,替应用程序增加一些所需要的特定 功能. 插件的构成(重点.记忆) 每个插件都由 ...