Docker-centos7基础篇

文章目录

  • 一.Docker的理念
    • 1.1 容器和虚拟机的区别
    • 1.2 docker容器
  • 二. docker安装
    • 2.1 docker安装命令
    • 2.2 docker基础常用命令
    • 2.3配置阿里云镜像加速
    • 2.4Docker镜像
    • 2.5本地镜像发布阿里云(非私有库)

一.Docker的理念

一次镜像,处处运行.达成Docker容器在任何操作系统上都是一致的,实现应用跨平台、跨服务器.
解决运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术.

1.1 容器和虚拟机的区别

Docker-centos7基础篇_第1张图片

  • 虚拟机: 带环境安装的一种解决方案.它可以在一种操作系统里面运行另一种操作系级,比如在Windows10系统里面运行Linux系统CentOS7。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。这类虚拟机完美的运行了另一套系统,能够使应用程序,操作系统和硬件三者之间的逻辑不变。
    虚拟机缺点: 1资源占用多 2冗余步骤多 3启动慢
  • 容器: 可以将软件运行所需的所有资源打包到一个隔离的容器中。不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置
    总结: Docker容器在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小。

1.2 docker容器

Docker是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的Hypervisor支持,所以在一台物理机上可以运行很多个容器实列,可大大提升物理服务器的CPU和内存的利用率。

特点:
更快速的应用交付和部署√
更便捷的升级和扩缩容√
更简单的系统运维√
更高效的计算资源利用√

基本组成:
docker镜像 一个只读模板.它相当于是一个root文件系统。镜像可以用来创建Docker容器,一个镜像可以创建很多容器。
docker容器 实例类似于java中new出来的实例对象,容器是用镜像创建的运行实例。
docker仓库 集中存放镜像的地方.

Docker-centos7基础篇_第2张图片
Docker-centos7基础篇_第3张图片

二. docker安装

Docker并非是一个通用的容器工具,它依赖于已存在并运行的Linux内核环境。
Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的Linux主机。因此,,Docker必须部署在Linux内核的系统上。如果其他系统想部署Docker就必须安装一个虚拟Linux环境。

docker镜像地址

docker安装方法

2.1 docker安装命令

# 卸载已经存在的旧版本
yum remove docker 
              docker-client 
              docker-client-latest 
              docker-common 
              docker-latest 
              docker-latest-logrotate 
              docker-logrotate 
              docker-engine
# 安装yum-utils包(提供yum-config-manager 实用程序)并设置稳定的存储库。
yum install -y yum-utils
# 使用中国大陆镜像源下载
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装最新版本的 Docker Engine 和 containerd,或者进入下一步安装特定版本:
yum install docker-ce docker-ce-cli containerd.io -y
# 重新构建缓存索引
yum makecache fast
# 后台启动docker
systemctl start docker
# 测试启动docker
docker version
docker run hello-world
# 卸载docker
systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

2.2 docker基础常用命令

注意不要安装centos8否则yum都用不了
docker只加载镜像最小内核

systemctl stop docker # 停止
systemctl status docker # 查看docker状态
systemctl enable docker # 开机启动

docker info # 查看docker概要信息
docker --help # 查看docker总体帮助文档
docker 具体命令 --help # 查看docker命令帮助文档

# --name="容器新名称"
# -p 指定端口映射
# -d 守护线程启动
docker run -d 镜像名 # 注意一定要配合docker ps使用! 有的不支持后台启动,造成自杀. mysql,redis一般这样使用
docker exec -it 容器id bashShell # 重新进入容器终端交互,启动新进程的同时打开终端.退出不会停止容器
# docker attach 容器id # 重新进入容器终端交互,不启动新进程打开终端,退出会停止容器
docker run -it [--name=cen] centos /bin/bash # 以交互式容器启动,为容器重新分配一个伪输入终端.容器名称为cen的centos镜像实例容器
yum -y update # 更新yum源
yum -y install vim # 安装所需要的vim

exit # 退出交互式容器终端,容器停止; 
docker start 容器名或容器id # 启动已经停止运行的容器
docker restart 容器名或容器id # 重启容器
docker stop 容器名称或容器id # 停止容器
docker kill 容器名称或容器id # 强制停止容器

docker cp 容器id:容器内文件路径 目的主机路径 # 将容器内文件复制到主机上
docker export 容器id>文件名.tar #导出容器的内容留作为一个tar归档文件
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号

查看操作

# 我们使用REPOSITORY:TAG来定义不同的镜像
docker images  # 列出本地镜像 REPOSITORY镜像源 TAG版本号 IMAGE ID镜像id CREATED创建时间 SIZE大小
docker ps # 查看当前正在运行的容器
docker search 镜像名 # 搜索镜像是否在远程库
docker pull 镜像名[:TAG] # 拉取镜像到本地镜像
docker system df  # 查看镜像/容器数据卷所占空间

docker logs 容器id # 查看容器日志
docker inspect 容器id # 查看容器内部细节

删除操作

docker rmi -f 镜像名 # 删除镜像
docker rmi -f 镜像id # 强制删除镜像

docker rm 容器id # 删除已经停止的容器
docker rm -f 容器id #强制删除容器
docker rm -f $(docker ps -aq) # 删除所有容器
docker ps -a -q|xargs docker rm # 删除所有容器

commit提交镜像

ctrl+p+q # 退出,容器不停止
docker commit -m="提交信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名] # 继承当前容器 反向生成新镜像. 容器外使用

默认情况,仓库被创建在容器的/varliblregistry目录下,建议自行用容器卷映射,方便于宿主机联调

# 本地镜像发布到私服仓库

docker pull registry # 拉取私服仓库
#-p 5000:5000 分别暴露宿主机端口和容器内部端口
docker run -d -p 5000:5000 [-v 宿主机的路径:容器内的路径 --privileged=true] registry # 生成registry镜像的容器
docker commit -m="提交信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名] # 继承当前容器 反向生成新镜像. 容器外使用
curl -XGET http://127.0.0.1:5000/v2/_catalog # 验证私服库有啥
docker tag [ImageId] http://127.0.0.1:5000/[镜像名]:[镜像版本号] # 重新规范命名镜像

[root@VM-16-9-centos ~]# vi /etc/docker/daemon.json
在这里插入图片描述
docker pull 镜像名
curl -XGET http://127.0.0.1:5000/v2/_catalog # 验证私服库有啥

2.3配置阿里云镜像加速

用户唯一,加速拉取docker内容
Docker-centos7基础篇_第4张图片

Docker-centos7基础篇_第5张图片

2.4Docker镜像

docker镜像是分层的: UnionFs,(联合文件系统)Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统>的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。Union文件系统是Docker镜像的基础。镜像可以>通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
docker镜像加载原理: bootfe(boot file system)主要包含bootloader和kernel, bootloader主要是引导加载kernel, Linux刚启动时会加载>bootfs文件系统,在Docker镜像的最底层是引导文件系统boots。这一层与我们典型的LinuxUnix系统是一样的,包含booth加载器和内核。>>当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。
rootfs (root fle system),在bootts之上。包含的就是典型Linux系统中的/dev, /proc, bin, letc等标准目录和文件。rootfs就是各种不同的操作>系统发行版,比如Ubuntu,Centos等等。

当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。
所有对容器的改动-无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。

2.5本地镜像发布阿里云(非私有库)

Docker-centos7基础篇_第6张图片
Docker-centos7基础篇_第7张图片
上传和拉取请自行查阅官方文档

注意
Docker-centos7基础篇_第8张图片
之所以上传的容量减小了是因为UnionFs,(联合文件系统)的强大.只上传容器层的内容.

你可能感兴趣的:(java,后端,java,后端)