Docker应用容器学习
前言
学习docker容器前提:
1、免费,本地电脑安装VM虚拟机
(37条消息) 史上最详细的Hadoop环境搭建_似水流年的博客-CSDN博客_hadoop环境搭建
(37条消息) Linux系统安装(VMware 14+ CentOS 7,2018年最新)_張小噶的博客-CSDN博客_vmware14
2、购买云服务器
有兴趣的可以听听入门的B站视频
【狂神说Java】Docker最新超详细版教程通俗易懂_哔哩哔哩_bilibili
Docker官网:
Docker文档地址:
Docker Documentation | Docker Documentation
Docker仓库地址:
Docker Hub Container Image Library | App Containerization
一、概述
1.1 基本概念
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
1.2 优势
简化程序:Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。
节省开支:一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。
1.3 与传统VM特性对比:
作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著优势:
- Docker 容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式要快得多。
- Docker 容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器。
- Docker 通过类似Git的操作来方便用户获取、分发和更新应用镜像,指令简明,学习成本较低。
- Docker 通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率。
- Docker 容器除了运行其中的应用之外,基本不消耗额外的系统资源,保证应用性能的同时,尽量减小系统开销。
-
Docker 利用Linux系统上的多种防护机制实现了严格可靠的隔离。从1.3版本开始,Docker引入了安全选项和镜像签名机制,极大地提高了使用Docker的安全性。
1.4 基础架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
1.5 Docker 技术的基础:
- namespace,容器隔离的基础,保证A容器看不到B容器. 6个名空间:User,Mnt,Network,UTS,IPC,Pid
- cgroups,容器资源统计和隔离。主要用到的cgroups子系统:cpu,blkio,device,freezer,memory
- unionfs,典型:aufs/overlayfs,分层镜像实现的基础
1.6 Docker 组件
- docker Client客户端 -->向docker服务器进程发起请求,如:创建、停止、销毁容器等操作
- docker Server服务器进程 -->处理所有docker的请求,管理所有容器
- docker Registry镜像仓库 -->镜像存放的中央仓库,可看作是存放二进制的scm
二、安装部署
2.1 准备条件
目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本2.6.32-431 或者更高版本。
本人虚拟机如下:
2.2 安装 Docker
yum install docker -y #安装
systemctl start docker #启动
systemctl enable docker #设置开机自启动
2.3 基本命令
docker search centos #搜索镜像
默认从国外拉去,速度很慢,可以使用daocloud配置加速
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://d6f11267.m.daocloud.io 脚本是写入 echo "{\"registry-mirrors\": [\"http://d6f11267.m.daocloud.io\"]}"> /etc/docker/daemon.json systemctl restart docker #重启失效
根据需求拉取镜像:
docker pull docker.io/ansible/centos7-ansible
拉去search到的全部镜像:
for i in `docker search centos|awk '!/NAME/{print $2}'`;do docker pull $i;done
查看本地镜像:
docker images
2.4 命令整理
容器操作:
docker create # 创建一个容器但是不启动它
docker run # 创建并启动一个容器
docker stop # 停止容器运行,发送信号SIGTERM
docker start # 启动一个停止状态的容器
docker restart # 重启一个容器
docker rm # 删除一个容器
docker kill # 发送信号给容器,默认SIGKILL
docker attach # 连接(进入)到一个正在运行的容器
docker wait # 阻塞一个容器,直到容器停止运行
获取容器信息:
docker ps # 显示状态为运行(Up)的容器
docker ps -a # 显示所有容器,包括运行中(Up)的和退出的(Exited)
docker inspect # 深入容器内部获取容器所有信息
docker logs # 查看容器的日志(stdout/stderr)
docker events # 得到docker服务器的实时的事件
docker port # 显示容器的端口映射
docker top # 显示容器的进程信息
docker diff # 显示容器文件系统的前后变化
导出容器:
docker exec # 在容器里执行一个命令,可以执行bash进入交互式
执行:
docker exec # 在容器里执行一个命令,可以执行bash进入交互式
2.5 简单实践操作
运行并进入容器操作:
docker run -i -t docker.io/1832990/centos6.5 /bin/bash
- -t 表示在新容器内指定一个伪终端或终端;
- -i 表示允许我们对容器内的 (STDIN) 进行交互;
- -d 表示将容器在后台运行;
- /bin/bash 。这将在容器内启动 bash shell;
所以当容器(container)启动之后,我们会获取到一个命令提示符:
在容器内我们安装MySQL并设置开机自启动,将修改后的镜像提交:
docker ps -l 查询容器ID
docker commit -m "功能" -a "用户信息" ID tag 提交修改后的镜像
docker inspect ID 查看详细信息
docker push ID 上传docker镜像
利用DockerFile创建镜像
使用命令 docker build , 需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建镜像。
mkdir DockerFile cd DockerFile cat > Dockerfile <<EOF FROM 603dd3515fcc MAINTAINER Docker xuel RUN yum install mysql mysql-server -y RUN mddir /etc/sysconfig/network RUN /etc/init.d/mysqld start EOF
docker build -t "centos6.8:mysqld"
-
-t 制定repository 与tag
-
. 指定Dockerfile的路径
注意一个镜像不能超过 127 层 此外,还可以利用 ADD 命令复制本地文件到镜像; 用 EXPOSE 命令来向外部开放端口; 用 CMD 命令来描述容器启动后运行的程序等。 CMD [“/usr/sbin/apachectl”, “-D”, “FOREGROUND”]
转载于:
Docker 从入门到实战,收藏起来有备无患~ (qq.com)
官方站点:
《Linux就该这么学》 - 必读的Linux系统与红帽RHCE认证免费自学书籍 (linuxprobe.com)
Linux命令大全:
Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 (linuxcool.com)
本文来自博客园,作者:chch213,转载请注明原文链接:https://www.cnblogs.com/chch213/p/16343141.html