容器(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学习之3——容器的更多相关文章

  1. Docker学习笔记——制作容器与容器概念

    Docker能做些什么? 1.docker能够解决虚拟机能够解决的问题 2.隔离应用依赖 3.创建应用镜像并复制 4.创建容易分发的即启即用的应用 5.docker的想法是创建软件程序可移植的轻量容器 ...

  2. Docker学习第二天-容器

    Docker 容器 容器是 Docker 又一核心概念. 简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境.对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环 ...

  3. 【转】Docker学习_本地/容器文件互传(5)

    将容器内文件拷贝到宿主机 docker cp <containerId>:/导出文件的位置/xxx.sql /宿主机的位置 示例:docker cp bf4c4fff338c:/root/ ...

  4. docker学习笔记:容器的网络设置

    创建一个docker容器,docker系统会自动为该容器分配一个ip地址,通常是172.17开头. 我们可以在主机上用 docker inspect 命令 或者进入容器用ifconfig命令来查看容器 ...

  5. 优秀的云计算工程师需要学什么?云计算Docker学习路线

    云计算工程师要学什么?随着互联网的快速发展,云计算这个词大家并不陌生,但是云计算究竟是做什么的,想要从事云计算要学习什么,很多都不知道,那么今天就给大家讲一下云计算. 云计算是基于互联网的相关服务的增 ...

  6. Docker学习笔记 - Docker容器内部署redis

    Docker学习笔记(2-4)Docker应用实验-redist server 和client的安装使用 一.获取redis容器(含客户端和服务端) 二.创建服务端容器 1.在终端A中运行redis- ...

  7. Docker学习笔记 - Docker容器之间的连接

    学习目标: 容器之间可以相互连接访问:: --link redis:redisAlias 准备工作 FROM ubuntu:14.04 RUN apt-get install -y ping RUN  ...

  8. docker学习-lnmp+redis之搭建lnp容器服务

    nginx+php7.0容器服务 本来想用单独的容器(nginx和php分开),但是因为是初学,php容器安装扩展的时候一直失败,所以就把centos+nginx+php放一起搭建了,优点是扩展简单, ...

  9. Docker学习之Docker容器基本使用

    Docker学习之Docker容器基本使用 新建容器并启动 命令格式:docker run --options repository:tag 后台运行 命令格式:-d 已存在的容器相关操作 启动:do ...

随机推荐

  1. 2-创建spring boot项目

    想要创建一个spring boot项目,最好的方法就是参照官网的例子: https://spring.io/guides/gs/maven/#scratch 创建的过程我就不再啰嗦了,官网描述非常详细 ...

  2. 【机器学习】K均值算法(I)

    K均值算法是一类非监督学习类,其可以通过观察样本的离散性来对样本进行分类. 例如,在对如下图所示的样本中进行聚类,则执行如下步骤 1:随机选取3个点作为聚类中心. 2:簇分配:遍历所有样本然后依据每个 ...

  3. 从知乎首页用户操作入口学习到的CSS技巧 - 合理利用伪元素实现一些装饰样式

    最近在模仿做一个静态的PC版知乎,在模仿的过程中,从知乎工程师的方法中学到了不少知识,比如CSS方面的,以下介绍一个今天学到的伪元素的技巧. 示例 DOM结构为: <div class=&quo ...

  4. 《Java核心技术卷1》拾遗

    之前对Java的基础知识有过学习,现在开始学习<Java核心技术卷1>,将一些新学的知识点,做简要记录,以备后续回顾: 1.double (1)所有的“非数值”都认为是不相同的 if(x= ...

  5. Java--druidAPI查询

    maven依赖<dependency> <groupId>in.zapr.druid</groupId> <artifactId>druidry< ...

  6. 图解HTTP第七章

    确保 Web 安全的HTTPS 1>HTTP 的缺点 通信使用明文可能会被窃听: [1]TCP/IP 是可能被窃听的网络 [2]加密处理防止被窃听: *通信的加密:通过和 SSL(Secure ...

  7. Cordova配置与WebApp混合开发环境配置

    好久都没来更新随笔了,这阵子比较忙,不过还是在不断的学习当中,今天给大家分享一下Cordova的配置与搭建WebApp混合开发环境的配置. 准备好了吗?让我们一步步来咯!!! 1.配置JDK环境 用的 ...

  8. 将 Desktop Central 与帮助台和 OS Deployer 集成

    将 Desktop Central 与帮助台和 OS Deployer 集成 Desktop Central 可以与以下应用程序集成: 帮助台 OS Deployer Asset Explorer 与 ...

  9. 4yue 22

    1 # 1 . 进程 线程 协程 之间的相同点和不同点 #相同点:都能帮助我们实现并发操作,规避IO时间,提高执行效率 #进程:内存隔离 操作系统级别 可以利用多核(高计算) 计算机中资源分配的最小单 ...

  10. duilib窗口从任务栏恢复问题

    关闭.最大最小化和恢复等消息由WM_SYSCOMMAND和OnSysCommand()进行处理,需要在HandleMessage()中添加处理.