linux ---docker篇
Docker
docker是什么?
docker最初是dotCloud公司创始人Solomom Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并在2013年3月以Apache2.0授权协议开源,主要项目代码在GitHub上进行维护...
docker是linux容器的一种封装,提供简单易用的容器使用接口,它是最流行的linux容器解决方案.docker的接口非常简单,用户可以方便的创建和销毁容器,docker将应用程序的依赖,打包在一个文件里面,运行这个文件就会生成虚拟容器,程序运行在虚拟容器里,如同真实物理机上运行一样,反正就是有了docker,就不用担心讨厌的环境配置问题了!
为什么要用docker?
它作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势.
docker容器的优势
- 更高效的利用系统资源
- 更快速的启动时间
- 一直的运行环境
- 持续交付和部署
- 更轻松的迁移
- 更轻松的维护和扩展
docker的生命周期
镜像 (images)
Docker镜像就是一个只读的模板,镜像可以用来创建容器.docker提供了一个很简单的机制来创建镜像或更新现有镜像,用户甚至可以从其他人那里下载已经做好的镜像直接使用
容器 (container)
镜像(image)和容器(container)的关系,就像面向对象中类和实例的关系一样,镜像是静态定义的class ;容器是镜像运行时的实体object #容器随时都可以被创建,暂停,销毁,停止,每个容器都是相互隔离的,保证安全的平台,docker利用容器运行应用. #我们也可以把容器看作简易的linux环境.
仓库 (repository)
仓库是存放镜像文件的场所,分为公开仓库(public)和私有仓库(Private) #最大的公开仓库就是Docker Hub,存放了数量庞大的镜像供用户下载. #用户创建自己镜像之后就可以使用push命令将它上传到公开或私有库,这样另外一台机器使用的时候,只需要从仓库上pull下来即可 #Docker仓库和Git的概念类似,仓库注册服务器和GitHub这样的代码托管服务类似.
部署docker
###注意: 若之前装过docker,可用以下命令移除docker
# yum remove docker ###步骤
1. 安装必要的系统工具
# yum install -y yum-utils device-mapper-persistent-data lvm2 2. 添加软件源信息
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 3. 更新 yum 缓存
# yum makecache fast 4. 安装docker-ce
# yum -y install docker-ce 5. 启动docker
# systemctl start docker 6. 测试运行 hello-world
# docker run hello-world
## 如果测试失败,首先测试如下:
# #docker version | docker info #两个命令都没问题的话再进行分析问题. 7.安装docker之后,测试hello-world镜像,终端卡在Unable to find image 'hello-world:latest' locally位置 ? #分析 : docker在本地没有找到hello-world镜像,也没有从docker仓库中拉取镜像,出项这个问题的原因:是应为docker服务器再国外,我们在国内无法正常拉取镜像,所以就需要我们为docker设置国内阿里云的镜像加速器;
#解决
1.修改配置文件 /etc/docker/daemon.json 如下:
{"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]}
2. sudo systemctl restart docker #重启docker即可!
安装docker
docker常用命令
增
docker pull hello-world #下载docker镜像,产生容器示例 docker run ubuntu #运行docker镜像,ubuntu系统 docker run -it ubuntu /bin/bush #交互式运行ubuntu容器,进入容器空间内 参数解释 -i 交互式的命令操作,-t开启一个终端提供访问, /bin/bush 指定shell解释器
打包构建一个携带vim的contos镜像文件
1.docker run -it centos /bin/bush #先运行一个centos的基础镜像文件 2.yum install vim -y #安装vim 3.docker commit 1d5698b91178 (当前镜像id) lxf163/centos-vim #退出容器空间,提交这个容器,为新的镜像
导出/导入镜像文件
docker save 94e814e2efa8 > /opt/ubuntu.tar.gz #导出 docker load 94e814e2efa8 < /opt/ubuntu.tar.gz #导入镜像,自动解压缩
查
#---注意运行过docker镜像后,会产生容器记录;docker容器必须有后台程序在运行,否则容器就退出---
docker image ls /docker images #两者都是查看镜像 docker container ls /docker ps #两者都是查看正在运行的容器进程 docker ps -a 查看所有的容器记录 docker search centos #查询docker镜像记录
删 (深思而行)
docker rm 容器id # 删除容器记录 docker rm `docker ps -aq` # 批量删除容器记录,不推荐操作此命令 docker rm -f `docker ps -aq` #强制删除所有容器记录,包括正在运行的容器,慎用!!! docker rmi 镜像id #删除镜像记录 docker rmi `docker images -aq` #批量删除镜像文件
改
docker tag 镜像id 新的镜像名 #修改docker镜像名,tag标记名
docker镜像常用命令
docker images #查看所有本级镜像 docker pull redis # 获取新的redis镜像 docker search nginx #搜索nginx 的镜像
容器相关
docker start/stop 容器id #启/停docker容器 docker run -it --rm 94e /bin/bash # --rm运行容器,退出后,删除容器记录 docker run --name mynginx 881 /bin/bash #运行容器后给其命名 docker run -d centos /bin/sh -c "while true;do echo hello centos; sleep 1;done" #后台不断运行一个shell语句 -d后台运行, -C指定一个shell语句 docker logs 容器id #查看容器空间内的日志 !!!
docker logs -f 容器id #不间断打印容器内日志信息 docker exec -it 容器id /bin/bash # 进入正在运行的容器空间
启动容器的方式
启动容器的方式有两种: #1.基于镜像新建一个容器并启动,也就是新建一个容器 docker run nginx
#2.在处于(stopped)停止状态下的容器重新启动,利用原来启动过的容器id启动. docker start as5 #因为Docker的容器太过于轻量级,大部分用户都是随时删除,随时创建.
外部访问容器
在容器中可以运行网络应用,但是要让外部也可以访问这些应用,可以通过-P 和-p参数进行端口映射!!!
docker的端口映射
-P #大写P参数会随机映射端口到容器开放的网络端口 docker run -d -P training/webapp python app.py
检查映射的端口
docker ps -l #0.0.0.0:32771->5000/tcp 其中32771是宿主机ip的端口,5000是容器端口
最好通过-p参数指定映射端口,因为-P参数随机映射端口,给访问带来极大不便
docker run -d -p 9999:5000 training/webapp python app.py
52ceb29239466617e2ebff333fbb9e59514910d1309961c6a94a191fbf68a646
查看指定容器的端口映射
#[root@localhost opt]# docker port 52c
5000/tcp -> 0.0.0.0:32771
然后通过宿主机ip:9999访问服务器
dockerfile
...待续
linux ---docker篇的更多相关文章
- 运维利器:钉钉机器人脚本告警(Linux Python 篇)
写在前面的话 在前面的博客中已经具体提到了如何获取对的机器人的 Token 等操作,不清楚的可以参考之前写的 [运维利器:钉钉机器人脚本告警(Linux Shell 篇)]这篇博客的前部分. 本文主要 ...
- DELPHI开始支持LINUX DOCKER
DELPHI开始支持LINUX DOCKER 本方翻译自Marco Cantu的文章. 在过去的几年中,将服务器端解决方案(实际上是任何类型的应用程序)部署到轻量级容器而不是物理机器或虚拟机已经变得越 ...
- 前端学习 linux —— 第一篇
前端学习 linux - 第一篇 本文主要介绍"linux 发行版本"."cpu 架构"."Linux 目录结构"."vi 和 v ...
- 不就是抽个血吗,至于么-jQuery,Linux完结篇
hi 趁着周一去抽血化验,真开心...下午报告才出来,不过早上来了就开始各种晕菜,叫错名字,说错话.....至于么.. 还有在教研室的30天就可以肥家了,凯森凯森.今天不想干活(哪天想干过我就问问), ...
- LNMP平台搭建---Linux系统安装篇
在互联网网站开发领域,有一个名词,大家一定不陌生,那就是LAMP,经典的Web服务器环境,由Linux+Apache+MySQL+PHP组成,,后来,一个名叫Nginx的Web服务器开源出来了,因其更 ...
- Win10 & Linux Docker 安装使用
Docker最近推出了可以运行在Win10和Mac上的稳定版本,让我们赶紧来体验一下. 一.Windows Docker 安装 1.安装 需要的条件为: 64bit Windows 10,开启Hype ...
- Linux入门篇(一)——文件
这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...
- Linux入门篇(四)——Vim的使用与Bash
这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...
- Linux入门篇(二)——文件
这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...
随机推荐
- sessionStorage:写入记事本功能[内容写入sessionStorage中,读取,删除]
知识点: 1.设置sessionStorage----setItem:sessionStorage.setItem(key,data); 存储数据使用key是唯一,不可重复,每触发都生成:如用一个固定 ...
- Map和Collection
Map:key---Value(一对儿数据) HashMap:无序存放,key不允许重复 HashTable:无序存放,key不允许重复 key是set集合,value是collection集合 Co ...
- Arduino语言介绍
Arduino语言介绍 Arduino语言是建立在C/C++基础上的,其基础是C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些参数设置都函数化,不用我们去了解他的底层,让不了解AV ...
- MySql常见的数据类型
⒈整型 名称 字节数 tinyint 1 smallint 2 mediumint 3 int/integer 4 bigint 8 特点: 1.如果不设置无符号还是有符号,默认是有符号,如果想设置无 ...
- 【原创】大叔经验分享(19)spark on yarn提交任务之后执行进度总是10%
spark 2.1.1 系统中希望监控spark on yarn任务的执行进度,但是监控过程发现提交任务之后执行进度总是10%,直到执行成功或者失败,进度会突然变为100%,很神奇, 下面看spark ...
- Python开发【第十篇】:模块
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
- Python-数据类型之列表
列表和元祖都属于序列类型,该序列内可以包含任意数据类型,且数据存储是有序的,索引从0到1 一:列表概述 1.1 如何定义一个列表 中括号,已逗号为分割符,可以放任意的数据类型,甚至是对象. li = ...
- 关于saltstack
配置Saltstack master 服务器 master服务器:saltstack.master 172.18.1.103 minion客户端:minion01 172. ...
- bootstrap selectpicker控件select下拉框动态数据无法回显的问题
有关于selectpicker下拉框数据回显的问题,当查看一个对象的属性的时候, 发现有关于selectpicker的下拉框并没有将返回的数据进行回显,显示的都是请选择, 经查证,当查看属性的时候,他 ...
- js属性对象的hasOwnProperty方法
Object的hasOwnProperty()方法返回一个布尔值,判断对象是否包含特定的自身(非继承)属性. 判断自身属性是否存在 var o = new Object(); o.prop = 'ex ...