ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker应用容器学习

2022-06-05 00:33:28  阅读:114  来源: 互联网

标签:容器 学习 Linux 镜像 Docker docker 运行


前言

学习docker容器前提:

1、免费,本地电脑安装VM虚拟机

(37条消息) 史上最详细的Hadoop环境搭建_似水流年的博客-CSDN博客_hadoop环境搭建

(37条消息) Linux系统安装(VMware 14+ CentOS 7,2018年最新)_張小噶的博客-CSDN博客_vmware14

2、购买云服务器

阿里云-上云就上阿里云 (aliyun.com)

有兴趣的可以听听入门的B站视频

【狂神说Java】Docker最新超详细版教程通俗易懂_哔哩哔哩_bilibili

Docker官网:

Home - 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)

 

标签:容器,学习,Linux,镜像,Docker,docker,运行
来源: https://www.cnblogs.com/chch213/p/16343141.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有