docker技术入门(1)
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)的更多相关文章
- 赞一个 kindle电子书有最新的计算机图书可买了【Docker技术入门与实战】
最近对docker这个比较感兴趣,找一个比较完整的书籍看看,在z.cn上找到了电子书,jd dangdang看来要加油啊 Docker技术入门与实战 [Kindle电子书] ~ 杨保华 戴王剑 曹亚仑 ...
- Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-2-driver
1>使用的driver 1〉generic 使用带有SSH的现有VM/主机创建机器. 如果你使用的是机器不直接支持的provider,或者希望导入现有主机以允许Docker Machine进行管 ...
- Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥
1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...
- Docker技术入门与实战第2版-高清文字版
Docker技术入门与实战第2版-高清文字版 下载地址https://pan.baidu.com/s/1bAoRQQlvBa-PXy5lgIlxUg 扫码下面二维码关注公众号回复100011 获取 ...
- Docker技术入门与实战
Docker技术入门与实战 下载地址https://pan.baidu.com/s/1bAoRQQlvBa-PXy5lgIlxUg 扫码下面二维码关注公众号回复100011 获取分享码 本书目录结 ...
- docker技术入门(2)
接上一篇文章 [容器技术]Docker容器技术入门(一) 今天接着上次聊一聊有关Docker网络.数据存储相关的技术点 Docker网络模式 01 Dokcer 通过使用 Linux 桥接提供容器之间 ...
- Docker技术入门与实战(文摘)
第一部分 基础入门 第1章 初识容器与Docker 第2章 核心概念与安装配置 第二部分 实战案例 第三部分 进阶技能 第四部分 开源项目
- Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-1-cli
Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境 Docker Machine是一种工具,它允许你在虚拟主机 ...
- Docker技术入门与实战 第二版-学习笔记-8-网络功能network-1-单个host上的容器网络
Docker 中的网络功能介绍 Docker 允许通过外部访问容器或容器互联的方式来提供网络服务 1) 外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -p或 -P参数 ...
随机推荐
- webpack--splitChunksPlugin配置学习随笔
该配置用于代码抽离.官方文档 官方默认配置: module.exports = { //... optimization: { splitChunks: { chunks: 'async', // 异 ...
- out string
示例 当希望方法返回多个值时,声明 out 方法很有用.使用 out 参数的方法仍然可以将变量用作返回类型(请参见 return),但它还可以将一个或多个对象作为 out 参数返回给调用方法.此示例使 ...
- xadmin 配置内置User模型
xadmin 配置内置USER模型 默认展示 在你的User模型对应的app下创建adminx 文件 import xadmin from django.contrib.auth import get ...
- c# 比较字符串
- [daily][qemu][kvm] 使用qemu/kvm模拟numa节点
qemu的配置参数又复杂又难用,man手册写的也是非常对付,很多信息都没有. 而且,竟然遗弃掉旧的配置,换用新的配置.不过这也是好事,说明它在发展,我是欢迎的. 唯一的问题是,要经常跟着它一起更新配置 ...
- virtual box 6.0 扩容原有磁盘空间 ubuntu18.04
virtual box 6.0 扩容原有磁盘空间 ubuntu18.04 1虚拟介质管理 1.1点击菜单 1.2 修改磁罗容量大小(需要关闭虚拟机),点击应用 2使用ubuntu安装镜像将新加容量添加 ...
- linux系统编程之文件与io(一)
经过了漫长的学习,C语言相关的的基础知识算是告一段落了,这也是尝试用写博客的形式来学习c语言,回过头来看,虽说可能写的内容有些比较简单,但是个人感觉是有史起来学习最踏实的一次,因为里面的每个实验都是自 ...
- memcached的缺点
上篇博客说了为什么引入memcached,主要讲述了memcached的优点,接下来就是我们在使用中必须要注意的内容,memcached的缺点,只有正确认识它,才能运用自如,接下来先看一下memcac ...
- Python语言程序设计(3)--实例2-python蟒蛇绘制-turtle库
1. 2. 3.了解turtle库 Turtle,也叫海龟渲染器,使用Turtle库画图也叫海龟作图.Turtle库是Python语言中一个很流行的绘制图像的函数库.海龟渲染器,和各种三维软件都有着良 ...
- java通过url读取网络图片
使用java.net读取网络文件 import java.io.BufferedInputStream; import java.io.FileOutputStream; import java.io ...