Docker之容器
容器(Container)
容器介绍: docker是通过容器来运行业务的,就像运行一个kvm虚拟机是一样的。容器其实就是从镜像创建的一个实例。 我们可以对容器进行增删改查,容器之间也是相互隔离的。和虚拟机最大的区别就是一个是虚拟的一个是隔离的。
缺点:不会像虚拟机那样隔离的那么彻底,我们可以将容器理解为简化版的linux,有进程运行在里面。
#创建容器
Usage: docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
#新建并启动容器
[root@controller ~]# docker run -t -i ubuntu:14.04 /bin/bash
root@55456b431849:/#
-t 分配一个伪终端
-i 标准输入保持打开
-d 守护进程运行
root@55456b431849:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@55456b431849:/# pwd
/
root@55456b431849:/# cat /etc/issue
Ubuntu 14.04.5 LTS \n \l
root@55456b431849:/# exit
exit #终止容器
Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...]
#查看处于终止状态的容器
[root@controller ~]# docker ps -a -q
f69ef742b752
be465c0dc442
55456b431849
#启动终止状态的容器
[root@controller ~]# docker start f69ef742b752 #进入容器
Usage: docker attach [OPTIONS] CONTAINER
[root@controller ~]# docker run -idt ubuntu
[root@controller ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cc9870d0853f ubuntu "/bin/bash" 22 seconds ago Up 21 seconds small_albattani
[root@controller ~]# docker attach small_albattani
root@cc9870d0853f:/# Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
#一般情况下使用nsenter工具进入容器,安装工具
[root@controller ~]# yum install -y util-linux
[root@controller ~]# docker run --name dockercentos -tid centos
9f228b6525d5a753fbda39b4a339ae3f8de5f26d6d85a56c006488f771b4f45b
[root@controller ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f228b6525d5 centos "/bin/bash" 10 seconds ago Up 7 seconds dockercentos
[root@controller ~]# docker inspect -f "{{ .State.Pid }}" dockercentos
85616
[root@controller ~]# nsenter -t 85616 -m -u -i -n -p
[root@9f228b6525d5 /]# docker inspect -f {{.State.Pid}}容器名或者容器id
#每一个容器都有.State.Pid,所以这个命令除了容器的id需要我们根据docker ps -a去查找,其他的全部为固定的格式
nsenter --target上面查到的进程id --mount --uts --ipc --net --pid #输入该命令便进入到容器中 解释nsenter指令中进程id之后的参数的含义: * –mount参数是进去到mount namespace中
* –uts参数是进入到uts namespace中
* –ipc参数是进入到System V IPC namaspace中
* –net参数是进入到network namespace中
* –pid参数是进入到pid namespace中
* –user参数是进入到user namespace中 我们可以写个脚本:
[root@controller ~]# cat IN_Docker.sh
#!/bin/sh
if [ $# -ne 1 ]
then
echo $"usage:bash $0{dockername}"
exit 1
fi
docker_in(){
NAME_ID=$1
PID=$(docker inspect -f "{{ .State.Pid }}" $NAME_ID)
nsenter -t $PID -m -u -i -n -p
}
docker_in $1
#运用
[root@controller ~]# sh IN_Docker.sh dockercentos
[root@9f228b6525d5 /]# #删除容器 docker rm -f 【NAMES】
[root@controller ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f228b6525d5 centos "/bin/bash" 18 minutes ago Up 18 minutes dockercentos
c5439518dcbe ubuntu:14.04 "/bin/bash" 20 hours ago Exited (0) 20 hours ago elegant_noyce
2bb8a93f5d34 ubuntu "echo 'hello I am ubu" 23 hours ago Exited (0) 19 hours ago gigantic_heyrovsky
[root@controller ~]# docker rm -f elegant_noyce
elegant_noyce
[root@controller ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f228b6525d5 centos "/bin/bash" 19 minutes ago Up 19 minutes dockercentos
2bb8a93f5d34 ubuntu "echo 'hello I am ubu" 23 hours ago Exited (0) 19 hours ago gigantic_heyrovsky #导出容器
[root@controller ~]# docker export dockercentos >test_dockercentos.tar
[root@controller ~]# ls
192.168.128.172 cd1.iso httpd.conf pike.install.sh test_dockercentos.tar web.yml
#导入容器
[root@controller ~]# cat test_dockercentos.tar |docker import - docker/cents7.4
小结:
容器是直接提供应用服务的组件,实现快速启动停止和高效服务性能的基础,生产环境中可以在容器前端引入HaProxy代理容器访问,实现高可用。
Docker之容器的更多相关文章
- Docker的容器
容器是一个打包了应用和服务的环境,是一个轻量级的虚拟机,每一个容器都由一组特定的应用和必要的依赖库组成. 容器的管理操作 容器常见的命令:查看.创建.启动.终止和删除 创建容器 docker crea ...
- 【转】深入 Docker:容器和镜像
在本专栏往期的 Flux7 系列教程 里,我们已经简单地探讨了 Docker 的基本操作.而在那篇教程中,我们一直是简单地将容器当成是"正在运行的镜像",并没有深入地区分镜像和容器 ...
- 理解Docker单机容器网络
在” 理解Docker单机容器网络 “一文中,还有一个Docker容器网络的功能尚未提及,那就是Docker容器的端口映射.即将容器的服务端口P’ 绑定到宿主机的端口P上,最终达到一种效果:外部程序通 ...
- docker进入容器的方式
通过docker创建守护运行(在使用-d参数时)的容器时,容器启动后会进入后台.用户无法看到容器中的信息.某些时候如果需要进入容器进行操作,有多种方法,包括使用docker attach命令.dock ...
- Docker与容器快速入门
Docker之风席卷全球,但很多人觉得docker入门确实不太容易,其原因在于很多知识点上没准备好,在docker解决了什么问题.怎么解决的.用什么技术解决的都还没想清楚的时候就去探索docker组件 ...
- Docker系列之(三):Docker微容器Alpine Linux
1. 前言 使用Docker创建容器时,基础镜像通常选择Ubuntu或Centos,不管哪个镜像的大小都在100MB以上. Alpine Linux是一个面向安全的轻型的Linux发行版. Alpin ...
- docker commit容器
docker commit 容器ID 镜象REPOSITORY 镜象TAG 如docker commit 52b41c68ac7b registry.lenovows.com:5000/video-a ...
- FW Docker为容器分配指定物理网段的静态IP
官方有关于网桥和IP配置的文档地址:https://docs.docker.com/articles/networking/ 1.宿主机(系统采用ubuntu-14.04.1-server-amd64 ...
- Docker,容器,虚拟机和红烧肉
Docker火了,有多火你自己看看下面的统计数据就知道了 在发布4个月的时间里,下载量就超过50000次,github上收到超过4000个star,涌现了超过100个贡献者,并且有超过150个项目和超 ...
- Docker: 限制容器可用的 CPU
默认情况下容器可以使用的主机 CPU 资源是不受限制的.和内存资源的使用一样,如果不对容器可以使用的 CPU 资源进行限制,一旦发生容器内程序异常使用 CPU 的情况,很可能把整个主机的 CPU 资源 ...
随机推荐
- VFS四大对象之一 struct super_block
linux虚拟文件系统四大对象: 1)超级块(super block) 2)索引节点(inode) 3)目录项(dentry) 4)文件对象(file) 现在先介绍第一个 一.super_block的 ...
- 应用服务器GC回收常见问题总结
近一段时间多次发现因GC问题造成系统性能问题(应用服务间歇性响应缓慢.应用服务器CPU占用较高等),在此总结一下: 1.代码中直接调用GC.Collect() 2.字符串等操作频繁的内存申请 3.频繁 ...
- weui中的日期选择控件关于时间段的设置!
近日用到了日期控件,但是需要把时和分去掉,功能上是做一个预约的功能,所以只需要在年月日后面提供时间段的选择. BUG在于如果第一次点开弹框而没做任何操作,然后点了其他任意区域则弹框关闭,甚至你的8:0 ...
- C# 生成二维码 QRCoder
最近项目上有个需求,需要将某个文件的下载地址生成二维码,并展示到网页上. 目前网上生成二维码的方法有好几种,本文将介绍[QRCoder]生成二维码的方式 一.首先通过VS中的[NUGET]下载并引用Q ...
- 洛谷 P1914 小书童——密码【字符串+模拟】
P1914 小书童——密码 题目背景 某蒟蒻迷上了“小书童”,有一天登陆时忘记密码了(他没绑定邮箱or手机),于是便把问题抛给了神犇你. 题目描述 蒟蒻虽然忘记密码,但他还记得密码是由一串字母组成.且 ...
- NOI 2004 郁闷的出纳员
Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常 ...
- HDU--2015
偶数求和 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- linux下vi编辑某文件时,操作出现 错误提示: E325: ATTENTION 2, Found a swap file by the name ".p1.c.swp"
当我在linux下用vi打开p1.c文件时 root@iZ2zeeailqvwws5dcuivdbZ:~/1/01/指针# vi p1.c 会出现如下信息: E325: ATTENTION Found ...
- grunt 插件开发注意事项
grunt的插件机制 task.loadNpmTasks = function(name) { var root = path.resolve('node_modules'); var tasksdi ...
- 【开发技术】Eclipse插件Call Hierarchy简介及设置
Call Hierarchy 主要功能是 显示一个方法的调用层次(被哪些方法调,调了哪些方法) 在MyEclipse里Help - Software updates - Find and instal ...