1Docker技术介绍

DOCKER是一个基于LXC技术之上构建的container容器引擎,通过内核虚拟化技术(namespace及cgroups)来提供容器的资源隔离与安全保障,KVM是通过硬件实现的虚拟化技术,它是通过系统来实现资源隔离与安全保障,占用系统资源比较小

官方网站:https://www.docker.com/

Docker组成:

客户端与服务端

Docker组件:

镜像

容器

仓库

2Docker与Openstack对比

3Docker 的优点

1)简化程序:

Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,在Docker容器的处理下,只需要数秒就能完成。

2)多样性:
Docker 帮你打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

3)节省开支:
云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

4Docker的应用场景

1)需要简化配置(测试环境与生产环境不同)

2)代码管理(代码上传与下载)

3)提升开发效率(开发环境配置的安装和openstack kvm相同)

4)应用隔离

5)服务器整合

6)调试

7)多终端、多租户

8)需要快速部署与环境一致性

5.Docker安装与配置

安装Docker服务

root@centos7 ~]# yum install docker -y
[root@centos7 ~]# systemctl start docker

下载镜像文件

下载镜像文件

[root@centos7 ~]# docker pull centos:latest
Trying to pull repository docker.io/library/centos ...
centos7: Pulling from docker.io/library/centos
93857f76ae30: Pull
complete
Digest: sha256:4eda692c08e0a065ae91d74e82fff4af3da307b4341ad61fa61771cc4659af60
[root@centos7 ~]# docker images
REPOSITORY        TAG      IMAGE ID  
  CREATED     SIZE
docker.io/centos  centos7  a8493f5f50ff 3 days ago  192.5 MB

删除镜像

[root@centos7 ~]# docker rmi a8493f5f50ff    ##容器ID

6Docker容器创建与管理

1)创建容器

方法一:

[root@centos7 ~]# docker run centos
/bin/echo "nihao"  ##创建容器
nihao
[root@centos7 ~]# docker ps -a   ##查看所有容器
CONTAINER ID  IMAGE  COMMAND   CREATED    STATUS
  PORTS    NAMES
3c113f9a4f1b centos "/bin/echo nihao" 43 seconds ago Exited (0) 41 seconds ago  boring_liskov

这里没有指定容器名称,自动命名,状态是自动退出

方法二:创建一个自定义名称的容器

[root@centos7 ~]# docker run --name mgg -t -i centos
/bin/bash
          
                   名称  分配伪终端  -i 处于打开状态
[root@2db7f1389dbd /]# ps -ef
UID   PID  PPID  C STIME TTY  TIME CMD
root   1    0  0 22:46 ?   00:00:00 /bin/bash
root   13   1  0 22:49 ?  00:00:00 ps -ef
[root@centos7 ~]# docker ps
CONTAINER ID  IMAGE   COMMAND   CREATED   STATUS
 PORTS    NAMES
2db7f1389dbd
 centos  "/bin/bash"  4 minutes ago   Up 4 minutes   mgg

docker ps -a是显示所有容器包括没有运行的(同virsh list --all)

2)进入、退出、启动容器

[root@2db7f1389dbd /]# exit   ##退出容器
exit
[root@centos7 ~]# docker start 2db7f1389dbd
  ##启动容器
2db7f1389dbd
[root@centos7 ~]# docker attach
2db7f1389dbd  ##进入容器(必须是启动状态下)
[root@2db7f1389dbd /]# hostname
2db7f1389dbd

这种进入方式,退出后容器就进入Down状态,如下

[root@2db7f1389dbd /]# exit
exit
[root@centos7 ~]# docker ps
CONTAINER ID   IMAGE  COMMAND   CREATED    STATUS
   PORTS   NAMES

3)使用nsenter命令进入容器

[root@centos7 ~]# nsenter --help
Usage:
 nsenter [options] <program>
[<argument>...]
Run a program with namespaces of other processes.
Options:
 -t, --target <pid>    
target process to get namespaces from
 -m, --mount[=<file>]   enter
mount namespace
 -u, --uts[=<file>]    
enter UTS namespace (hostname etc)
 -i, --ipc[=<file>]    
enter System V IPC namespace
 -n, --net[=<file>]    
enter network namespace
 -p, --pid[=<file>]    
enter pid namespace
 -U, --user[=<file>]  
 enter user namespace
 -S, --setuid <uid>     set uid in entered namespace
 -G, --setgid <gid>     set gid in entered namespace
     --preserve-credentials do not touch uids or gids
 -r, --root[=<dir>]     set the root directory
 -w, --wd[=<dir>]    
  set the working directory
 -F, --no-fork      
   do not fork before exec'ing <program>
 -Z, --follow-context   set SELinux context according to --target
PID
 -h, --help     display this help and exit
 -V, --version  output version
information and exit

获取容器的PID

[root@centos7 ~]# docker inspect --format
"{{.State.Pid}}" 2db7f1389dbd
4580
[root@centos7 ~]# nsenter -t 4580 -u -i -n -p
[root@2db7f1389dbd ~]# hostname
2db7f1389dbd
[root@2db7f1389dbd ~]# exit
logout
[root@centos7 ~]# docker ps
CONTAINER ID  IMAGE    COMMAND    CREATED  
 STATUS   PORTS  NAMES
2db7f1389dbd
 centos    "/bin/bash" 22 minutes ago   Up 7 minutes  mgg

4)删除容器

[root@centos7 ~]# docker ps -a
CONTAINER ID   IMAGE  COMMAND   CREATED     STATUS
   PORTS    NAMES
2db7f1389dbd
 centos  "/bin/bash"  31 minutes ago  Up 16 minutes  mgg
3c113f9a4f1b
 centos  "/bin/echo
nihao" 38 minutes ago Exited (0) 38 minutes ago boring_liskov
[root@centos7 ~]# docker rm 3c113f9a4f1b
 ##接名称也可以,删除一个停止的容器
3c113f9a4f1b
[root@centos7 ~]# docker rm -f  
3c113f9a4f1b ##删除一个正在运行的容器
[root@centos7 ~]# docker ps -a  
       
CONTAINER ID  IMAGE   COMMAND    CREATED  
 STATUS    PORTS   NAMES
2db7f1389dbd  
 centos    "/bin/bash"    31 minutes ago   Up 16 minutes  mgg
[root@centos7 ~]# docker run --rm centos
/bin/echo "hello"   ##创建时自动删除,用于测试
[root@centos7 ~]#docker --kill $(docker ps
-a -q)            ##删除正在运行的容器

docker技术入门(1)的更多相关文章

  1. 赞一个 kindle电子书有最新的计算机图书可买了【Docker技术入门与实战】

    最近对docker这个比较感兴趣,找一个比较完整的书籍看看,在z.cn上找到了电子书,jd dangdang看来要加油啊 Docker技术入门与实战 [Kindle电子书] ~ 杨保华 戴王剑 曹亚仑 ...

  2. Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-2-driver

    1>使用的driver 1〉generic 使用带有SSH的现有VM/主机创建机器. 如果你使用的是机器不直接支持的provider,或者希望导入现有主机以允许Docker Machine进行管 ...

  3. Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥

    1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...

  4. Docker技术入门与实战第2版-高清文字版

      Docker技术入门与实战第2版-高清文字版 下载地址https://pan.baidu.com/s/1bAoRQQlvBa-PXy5lgIlxUg 扫码下面二维码关注公众号回复100011 获取 ...

  5. Docker技术入门与实战

      Docker技术入门与实战 下载地址https://pan.baidu.com/s/1bAoRQQlvBa-PXy5lgIlxUg 扫码下面二维码关注公众号回复100011 获取分享码 本书目录结 ...

  6. docker技术入门(2)

    接上一篇文章 [容器技术]Docker容器技术入门(一) 今天接着上次聊一聊有关Docker网络.数据存储相关的技术点 Docker网络模式 01 Dokcer 通过使用 Linux 桥接提供容器之间 ...

  7. Docker技术入门与实战(文摘)

    第一部分 基础入门 第1章 初识容器与Docker 第2章 核心概念与安装配置 第二部分 实战案例 第三部分 进阶技能 第四部分 开源项目

  8. Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-1-cli

    Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境 Docker Machine是一种工具,它允许你在虚拟主机 ...

  9. Docker技术入门与实战 第二版-学习笔记-8-网络功能network-1-单个host上的容器网络

    Docker 中的网络功能介绍 Docker 允许通过外部访问容器或容器互联的方式来提供网络服务 1) 外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -p或 -P参数 ...

随机推荐

  1. 服务网关ZuulFilter过滤器--pre/post/error的用法(校验请求信息,获取路由后的请求/响应信息,处理服务网关异常)

    微服务中Zuul服务网关一共定义了四种类型的过滤器: pre:在请求被路由(转发)之前调用 route:在路由(请求)转发时被调用 error:服务网关发生异常时被调用 post:在路由(转发)请求后 ...

  2. AE二次开发,解决子窗体使用父窗体的AxControl控件

    在子窗体写构造函数,然后再在父窗体按钮点击事件下写 public frmIDW(AxMapControl axMapControl1) { InitializeComponent(); this.ax ...

  3. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(已弃用)

    前言 1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请 ...

  4. Python标准库-datatime和time

    Python标准库-datatime和time 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.标准库datatime 1>.datatime模块 #!/usr/bin/e ...

  5. 常见EMC疑问及对策

    1. 在电磁兼容领域,为什么总是用分贝(dB)的单位描述?10mV是多少dBmV? 答:因为要描述的幅度和频率范围都很宽,在图形上用对数坐标更容易表示,而dB就是用对数表示时的单位,10mV是20dB ...

  6. C++(四十一) — 多态、虚函数、虚析构函数、纯虚函数

     1.多态 面向对象程序设计中,多态性表现为: (1)重载多态:函数重载.运算符重载: (2)运行多态:通过基类的指针(或引用)调用不同派生类的同名函数,表现出不同的行为: (3)模板多态:参数多态, ...

  7. 如果不用 ReSharper,那么 Visual Studio 2019 能还原 ReSharper 多少功能呢?

    原文:https://blog.csdn.net/WPwalter/article/details/100158000 本文的内容分为三个部分: Visual Studio 能完全还原的 ReShar ...

  8. linux一些配置

    ifconfig 查询.设置网卡和ip参数 ifup ens33 启动网卡 ifdown 关闭网卡 systemctl restart/start/stop network 重启.开始.关闭 网络服务 ...

  9. 《3+1团队》第九次团队作业:Beta冲刺与验收准备

    1.团队项目github仓库地址链接 https://github.com/HaiYou667/3-1Growingfruits 2.Scrum meeting导航: [Beta]Scrum meet ...

  10. react 学习记录

    1.  脚手架搭建项目  create-react-app https://www.jianshu.com/p/d196761c8332 2. UI框架 https://ant.design/docs ...