容器(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. 打开手机模拟器后adb devices查看不到设备连接

    1.找到sdk\platform-tools目录下的adb.exe,将该adb.exe复制到模拟器安装目录下覆盖模拟器自带的adb.exe就可以了.

  2. 【Python】【BugList13】req = requests.get(url=target)报错: (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)')

    [代码] # -*- coding:UTF-8 -*- import requests if __name__ == '__main__': target = 'https://unsplash.co ...

  3. npm安装cnpm、vue、react

    安装cnpmnpm install -g cnpm --registry=https://registry.npm.taobao.org 安装vuecnpm install --global vue- ...

  4. 2019.03.28 bzoj3326: [Scoi2013]数数(数位dp)

    传送门 题意: 一个人数数,规则如下: 确定数数的进制B 确定一个数数的区间[L, R] 对于[L, R] 间的每一个数,把该数视为一个字符串,列出该字符串的所有连续子串对应的B进制数的值. 对所有列 ...

  5. 一. IntelliJ IDEA详细配置文档之初始环境搭建

    前言 对于用惯了eclipse的同学来说, 突然切换为idea不是一件那么容易的事情, 所以我会发布一系列只讲解idea使用技巧的文章, 请大家多多关注.  本系列文章的配置参考网上某教程的讲解, 本 ...

  6. UE4行为树

    这是 UE4中行为树编辑器 中可用的默认节点.取决于开发项目的不同(如射击游戏),可能会有更多节点.这里介绍五种行为树节点类型:   节点类型 描述 Composite(流程控制节点) 这种节点定义一 ...

  7. 【洛谷P2584】【ZJOI2006】GameZ游戏排名系统题解

    [洛谷P2584][ZJOI2006]GameZ游戏排名系统题解 题目链接 题意: GameZ为他们最新推出的游戏开通了一个网站.世界各地的玩家都可以将自己的游戏得分上传到网站上.这样就可以看到自己在 ...

  8. hightopo自己用开源的方案重构一遍

    经过一年多的学习吧前面路上的坑基本算踩过一遍了 所以下面计划吧hightopo网站上的demo用自己的方式重新写一遍

  9. Sqlalchemy python经典第三方orm

    Ⅰ. 安装 pip install sqlalchemy Ⅱ. 起步链接 import time import threading import sqlalchemy from sqlalchemy ...

  10. 1042.D Petya and Array 前缀 + 树状数组

    11.19.2018 1042.D Petya and ArrayNew Point: 前缀 + 树状数组 :树状数组逐个维护前缀个数 Describe: 给你一个数组,一个标记数,问你有多少区间[l ...