docker 的使用
docker 学习 1. Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。
输出Hello world docker run ubuntu:15.10 /bin/echo "Hello world" 以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。 2.运行交互式的容器
我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力 docker run -i -t ubuntu:15.10 /bin/bash 各个参数解析: -t:在新容器内指定一个伪终端或终端。 -i:允许你对容器内的标准输入 (STDIN) 进行交互。 此时我们已进入一个 ubuntu15.10系统的容器 我们尝试在容器中运行命令 cat /proc/version和ls分别查看当前系统的版本信息和当前目录下的文件列表 我们可以通过运行exit命令或者使用CTRL+D来退出容器。 3. 启动容器(后台模式)
使用以下命令创建一个以进程方式运行的容器 docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done" 在输出中,我们没有看到期望的"hello world",而是一串长字符 2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63 这个长字符串叫做容器ID,对每个容器来说都是唯一的,我们可以通过容器ID来查看对应的容器发生了什么。 首先,我们需要确认容器有在运行,可以通过 docker ps 来查看 CONTAINER ID:容器ID NAMES:自动分配的容器名称 4. 在容器内使用docker logs命令,查看容器内的标准输出
根据容器 id查看容器内部的输出
docker logs 2b1b7a428627
根据容器 name查看容器内部的输出
docker logs amazing_cori 5. 停止容器 docker stop 容器ID / 容器名称 6. 查看硬件使用率
docker stats 7.运行一个web应用
前面我们运行的容器并没有一些什么特别的用处。 接下来让我们尝试使用 docker 构建一个 web 应用程序。 我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。 docker pull training/webapp # 载入镜像 docker run -d -P training/webapp python app.py #运行一个容器 参数说明: -d:让容器在后台运行。 -P:将容器内部使用的网络端口映射到我们使用的主机上。 Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32769 上。 这时我们可以通过浏览器访问WEB应用 我们也可以通过 -p 参数来设置不一样的端口: docker run -d -p 5000:5000 training/webapp python app.py 容器内部的 5000 端口映射到我们本地主机的 5000 端口上。 8.网络端口的快捷方式
通过 docker ps 命令可以查看到容器的端口映射,docker 还提供了另一个快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。 上面我们创建的 web 应用容器 ID 为 bf08b7f2cd89 名字为 wizardly_chandrasekhar。 我可以使用 docker port bf08b7f2cd89 或 docker port wizardly_chandrasekhar 来查看容器端口的映射情况。 docker port bf08b7f2cd89 9. 查看 WEB 应用程序日志
docker logs [ID或者名字] 可以查看容器内部的标准输出。 docker logs -f 44e91ae4f916
image 10 .查看WEB应用程序容器的进程 docker top 44e91ae4f916 11. 检查 WEB 应用程序
使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。 docker inspect 44e91ae4f916 12. docker ps -l 查询最后一次创建的容器: 13. 移除WEB应用容器
我们可以使用 docker rm 命令来删除不需要的容器 删除容器时,容器必须是停止状态,否则会报如下错误 Error response from daemon: You cannot remove a running container xx ,Stop the container before attempting removal or force remove 14. Docker 镜像使用
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。 下面我们来学习: 1、管理和使用本地 Docker 主机镜像
2、创建镜像 15. 列出镜像列表
我们可以使用 docker images 来列出本地主机上的镜像。 16. 各个选项说明: REPOSITORY:表示镜像的仓库源 TAG:镜像的标签 IMAGE ID:镜像ID CREATED:镜像创建时间 SIZE:镜像大小 同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。 所以,我们如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下: docker run -t -i ubuntu:15.10 /bin/bash 如果要使用版本为14.04的ubuntu系统镜像来运行容器时,命令如下: docker run -t -i ubuntu:14.04 /bin/bash 17. 获取一个新的镜像
当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。 docker pull ubuntu:13.10 18. 查找镜像
我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个httpd的镜像来作为我们的web服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。 NAME:镜像仓库源的名称 DESCRIPTION:镜像的描述 OFFICIAL:是否docker官方发布 19. 拖取镜像
我们决定使用上图中的httpd 官方版本的镜像,使用命令 docker pull 来下载镜像。 下载完成后,我们就可以使用这个镜像了。 docker run httpd 20. 创建镜像
当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。 1.从已经创建的容器中更新镜像,并且提交这个镜像
2.使用 Dockerfile 指令来创建一个新的镜像 在运行的容器内使用 mkdir create a dir
在完成操作之后,输入 exit命令来退出这个容器。 此时ID为e218edb10161的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit来提交容器副本。 docker commit -m="has update" -a="gaocng" cff94d57f05d gaocong/ubuntu:v1 21. 构建镜像
我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。 FROM centos:6.7
MAINTAINER Fisher "71849@qq.com" RUN /bin/echo 'root:123456' |chpasswd
RUN useradd runoob
RUN /bin/echo 'runoob:123456' |chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D 每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。 第一条FROM,指定使用哪个镜像源 RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。 然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。 docker build -t runoob/centos:6.7 . 参数说明: -t :指定要创建的目标镜像名 . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径 使用docker images 查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec 后台运行自己构建的镜像 docker run -d -p 22:22 gaocong/centos:7 22 .容器命名
当我们创建一个容器的时候,docker 会自动对它进行命名。另外,我们也可以使用 --name 标识来命名容器,例如: 23. 容器IP的查方法 docker inspect 容器ID或容器名 |grep '"IPAddress"' 24. 使用docker exec进入Docker容器 docker exec -it 775c7c9ee1e1 /bin/bash
或
docker exec -it 4a59202ff53d /bin/sh
docker 的使用的更多相关文章
- docker——容器安装tomcat
写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...
- Docker 第一篇--初识docker
已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...
- 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)
环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...
- docker for mac 学习记录
docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...
- scrapy爬虫docker部署
spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...
- [原][Docker]特性与原理解析
Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上, ...
- 开发者的利器:Docker 理解与使用
困扰写代码的机器难免会被我们安装上各种各样的开发工具.语言运行环境和引用库等一大堆的东西,长久以来不仅机器乱七八糟,而且有些相同的软件还有可能会安装不同的版本,这样又会导致一个项目正常运行了,却不小心 ...
- 使用python自动生成docker nginx反向代理配置
由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...
- 微服务与Docker介绍
什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...
随机推荐
- MPU和CPU有什么区别?
MPU(或称MP,微处理器)和CPU(中央处理器)同为处理器,但范畴不同. 计算机(即电脑)分为巨型机,大型机,中型机,小型机和微型计算机5类.这5类计算机的运算核心统称为CPU,而MPU只是微型计算 ...
- pythonweb服务器编程(二)
Web静态服务器-1-显示固定的页面 #coding=utf-8 import socket from multiprocessing import Process def handleClient( ...
- PAT基础6-11
6-11 求自定类型元素序列的中位数 (25 分) 本题要求实现一个函数,求N个集合元素A[]的中位数,即序列中第⌊N/2+1⌋大的元素.其中集合元素的类型为自定义的ElementType. 函数接口 ...
- 一道c++面试题 输入一个维度,逆时针打印出一个指定的矩阵
题目:逆时针打印矩阵元素 #include <stdio.h> #include <malloc.h> int main() { int dimension; int *p; ...
- elastic-job详解(四):失效转移
elastic-job中最关键的特性之一就是失效转移.配置了失效转移之后,如果在任务执行过程中有一个执行实例挂了,那么之前被分配到这个实例的任务(或者分片)会在下次任务执行之前被重新分配到其他正常节点 ...
- Disruptor 详解
想了解一个项目,最好的办法就是,把它的源码搞到本地自己捣鼓. 在网上看了 N 多人对 Disruptor 速度的吹捧,M 多人对它的机制分析,就连 Disruptor 官方文档中,也 NB 哄哄自诩: ...
- angular学习笔记(6)- 指令
angular1学习笔记(6)- 指令 restrict-匹配模式 1.A - 属性 <my-menu title=Products></my-menu> 2.M - 注释 & ...
- mvc中AntiForgeryToken的实现方式--看Mvc源码
通过 AntiForgeryWorker的GetHtml()方法生成html --input hide元素--value=要验证的值,并生成cookie--用于保存需要验证的值. 类中的AntiFor ...
- Android SDK版本号 与 API Level 对应关系
转自:https://blog.csdn.net/qiaoquan3/article/details/70185550 Android SDK版本号 与 API Level 对应关系 新接触And ...
- 网卡最大传输单位MTU和巨型帧(Jumbo frame)设置
1. 背景:在1998年,Alteon Networks 公司提出把Data Link Layer最大能传输的数据从1500 bytes 增加到9000 bytes,这个提议虽然没有得到IEEE 80 ...