标签:row facebook line space 搜索 rhel pac day log
容器技术已经成为应用程序封装和交付的核心技术
? 容器技术的核心有以下几个内核技术组成:
– CGroups(Control Groups)-资源管理
– NameSpace-进程隔离
– SELinux安全
? 由于是在物理机上实施隔离,启动一个容器,可以像启动一个进程一样快速
Docker是完整的一套容器管理系统
? Docker提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术
Docker特性
Docker优点:
削减高峰,填堵低峰
相比于传统的虚拟化技术,容器更加简洁高效
传统虚拟机需要给每个VM安装操作系统
容器使用的共享公共库和程序
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker的缺点
容器的隔离性没有虚拟化强
共用Linux内核,安全性有先天缺陷
SELinux难以驾驭
监控容器和容器排错是挑战
docker应用场景
Web 应用的自动化打包和发布。
自动化测试和持续集成、发布。
在服务型环境中部署和调整数据库或其他的后台应用。
从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
diff
命令。docker:微服务,基于linux内核
Docker 架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。
容器与镜像的关系类似于面向对象编程中的对象与类。
Docker | 面向对象 |
---|---|
容器 | 对象 |
镜像 | 类 |
Docker 镜像(Images) |
Docker 镜像是用于创建 Docker 容器的模板。 |
Docker 容器(Container) |
容器是独立运行的一个或一组应用。 |
Docker 客户端(Client) |
Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。 |
Docker 主机(Host) |
一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 |
Docker 仓库(Registry) |
Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。
|
Docker Machine |
Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。 |
镜像
在Docker中容器是基于镜像启动的
镜像是启动容器的核心
镜像采用分层设计
使用快照的COW技术,确保底层数据不丢失
Docker hub镜像仓库
https://hub.docker.com
Docker官方提供公共镜像的仓库(Registry)
1、镜像是只读的
2、镜像应该从官方下载,不要试图自己手工制作
3、镜像采用联合文件系统,分层设计
4、查看当前系统有哪些镜像
docker镜像管理
二、部署docker
1、关闭防火墙和selinux
2、安装
[root@vh01 docker]# systemctl stop firewalld.service
[root@vh01 docker]# setenforce 0
[root@vh01 docker]# vim /etc/selinux/config
[root@vh01 docker]# yum install -y docker-io
3、起动
[root@vh01 docker]# systemctl start docker
[root@vh01 docker]# systemctl enable docker.service
[root@vh01 docker]# systemctl status docker
5、docker国内镜像仓库 daocloud 阿里https://dashboard.daocloud.io
可以先在daocloud或阿里注册用户,获得阿里或daocloud的开发者网址,然后执行以下操作
[root@room9pc16 docker]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --registry-mirror=http://aad0405c.m.daocloud.io
[root@room9pc16 docker]# systemctl daemon-reload
[root@room9pc16 docker]# systemctl restart docker
[root@room9pc16 docker]# docker search ubuntu
6、在仓库中搜索镜像
[root@vh01 docker]# docker search centos
7、导入镜像
[root@vh01 docker_images]# docker load < centos.tar
[root@vh01 docker]# cd /root/docker/docker_images/
[root@s62 docker_images]# for i in * ; do docker load < ${i} ;done
[root@vh01 docker_images]# docker images
8、导出镜像
[root@vh01 docker_images]# docker save nginx > /tmp/nginx.tar
9、如果运行容器时,本地没有镜像,docker将自动在仓库中下载
[root@room9pc16 docker]# dokcer run busybox echo hello
[root@room9pc16 docker]# docker run busybox tac /etc/passwd
10、下载名为buxybox的镜像
[root@room9pc16 docker]# docker pull busybox( 系统命令的集成)
镜像常用命令
命令列表
– docker images //查看镜像列表
– docker history //查看镜像制作历史
– docker inspect //查看镜像底层信息
– docker pull //下载镜像
– docker push //上传镜像
– docker rmi //删除本地镜像
– docker save //镜像另存为tar包
– docker load //使用tar包导入镜像
– docker search //搜索镜像
– docker tag //修改镜像名称和标签(相当于软连接)
docker images
? 查看镜像列表
– 镜像仓库名称 – 镜像标签 – 镜像ID – 创建时间 – 大小
容器常用命令
? 命令列表
– docker run //运行容器
– docker ps //查看容器列表,正在运行中的镜像,-a所有
– docker stop //关闭容器
– docker start //启动容器
– docker restart //重启容器
– docker attach|exec //进入容器
– docker inspect //查看容器底层信息
– docker top //查看容器进程列表
– docker rm //删除容器
? 列出容器列表 docker ps
– docker ps 查看正在运行的容器
– docker ps -a 查看所有容器列表
– docker ps -aq 仅显示容器id
? 管理容器docker stop|start|restart
– docker stop 关闭容器
– docker start 开启容器
– docker restart 重启容器
进入容器 docker attach|exec
– docker attach 进入容器,exit会导致容器关闭(进入当前解释器)
– docker exec 进入容器,退出时不会关闭容器(新建一个解释器)
显示容器详细信息
docker inspect 容器id
crtl+pq //把容器放在后台运行
容器
1、容器基于镜像启动
2、容器需要有程序在前台执行,一旦程序执行结束,容器也就停止
3、想要容器一直运行,需要一个交互式的终端或驻留在系统的进程
[root@vh01 docker_images]# docker run centos echo hello
4、查看容器信息
[root@vh01 docker_images]# docker ps
[root@vh01 docker_images]# docker ps -a
5、开启一个交互式的容器
[root@vh01 docker_images]# docker run -it centos bash
6、退出容器,但是不想结束容器,按组合键ctrl+p+q
7、在已启动的容器中运行新进程
[root@vh01 docker_images]# docker ps 查看容器的ID
[root@vh01 docker_images]# docker exec -it 0905ef31ad02 bash
[root@0905ef31ad02 /]#
[root@vh01 docker_images]# docker top 0905ef31ad02 查看容器中的进程
8、重新连接容器
[root@vh01 docker_images]# docker attach 0905ef31ad02
常用的与镜像相关的命令
1、了解镜像的制作过程
[root@vh01 ~]# docker history centos
2、了解镜底层信息
[root@vh01 ~]# docker inspect centos
查看某一具体项信息
[root@vh01 ~]# docker inspect -f {{.RootFS}} centos
3、删除本地镜像
[root@vh01 ~]# docker rmi nginx
如果有容器在使用该镜像则无法删除
4、为镜像新建tag
[root@vh01 ~]# docker tag centos:latest centos:basic 或
[root@vh01 ~]# docker tag centos centos:basic
如果源镜像没有指定tag,那么系统默认使用latest,如果源镜像没有latest,那么将会报错
常用容器相关命令
1、在容器中运行命令
[root@vh01 ~]# docker run centos ls / 命令在新建的容器中运行,执行结束后,容器也就相应的停止
2、查看run的帮助
[root@vh01 ~]# docker help run
3、在后台运行容器
[root@vh01 ~]# docker run -itd centos bash
4、连接容器
[root@vh01 ~]# docker attach 55ff014ffa6d
5、在容器中配置yum,并安装net-tools
6、查看正在运行的容器
[root@vh01 ~]# docker ps
7、查看所有容器列表
[root@vh01 ~]# docker ps -a
8、仅显示容器ID
9、容器状态管理
[root@vh01 ~]# docker start | stop | restart 容器
10、使用nginx镜像
[root@vh01 ~]# docker load < nginx.tar
[root@vh01 ~]# docker run -d nginx
[root@vh01 ~]# docker ps
[root@vh01 ~]# docker stop 容器ID
[root@vh01 ~]# docker exec -it 容器ID
11、查看容器信息
[root@vh01 ~]# docker inspect 2f3e82361b46
[root@vh01 ~]# docker inspect -f {{.NetworkSettings}} 2f3e82361b46
12、查看容器中运行的进程
[root@vh01 ~]# docker top 2f3e82361b46
13、删除容器
[root@vh01 ~]# docker ps -aq
[root@vh01 ~]# docker rm ef2ff7026212
[root@vh01 ~]# docker rm $(docker ps -aq) 删除所有的容器
14、操作容器时,每个容器还有一个名字,可以通过名字进行容器管理,容器的名字通过docker ps查看,最后一个字段即为名字
15、启动容器时,为其指定名字
[root@vh01 ~]# docker run -itd --name rhel7.2 centos bash
16、启动容器,前台运行apache
[root@room9pc16 docker_images]# docker run --name centos_web1 -it centos bash
[root@56258210ba50 /]# cd /etc/yum.repos.d/
[root@56258210ba50 yum.repos.d]# mkdir backup
[root@56258210ba50 yum.repos.d]# mv *repo backup
[root@56258210ba50 yum.repos.d]# yum-config-manager --add ftp://172.17.0.1/rhel7.2 配置好yum
[root@56258210ba50 yum.repos.d]# yum install -y httpd
[root@56258210ba50 ~]# httpd -DFOREGROUND
[root@s62 ~]# docker tag busybox:latest busybox:v1
[root@s62 ~]# docker images
[root@s62 ~]# docker stop $(docker ps -aq)
[root@s62 ~]# docker rm $(docker ps -aq)
[root@s62 ~]# docker ps -aq | while read l; do echo docker rm ${l}; done
标签:row facebook line space 搜索 rhel pac day log
原文地址:https://www.cnblogs.com/wwchihiro/p/9250501.html