Docker基础入门

通俗讲就是软件带环境安装

安装的时候,把原始环境一模一样的复制过来。利用Docker可以消除协作编码时“在我的机器上可以正常工作”的问题
在这里插入图片描述
Docker镜像的设计,使得Docker得以打破过去【程序即应用】的观念。透过镜像将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。

Docker理念

通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的app及其运行环境能够做到**“一次封装,到处运行”**
在这里插入图片描述
解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术

Docker和传统虚拟化方式的不同之处

  • 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程
  • 而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器比传统虚拟机更加轻便
  • 每个容器之间互相隔离,每个容器有自己的文件系统,容器之间不会相互影响,能区分计算资源

Docker安装

在这里插入图片描述

可以通过uname -r查看自己的内核信息
cat /etc/redhat-release查看版本

docker架构图
在这里插入图片描述
docker的基本组成

  1. 镜像

只读的模板。镜像可以用来创建docker容器,一个镜像可以创建多个容器
在这里插入图片描述

  1. 容器

docker可以利用容器独立运行一个组件。容器时用镜像创建的运行实例
它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看作是一个简单版的Linux环境和运行在其中的应用程序
容器的定义和镜像几乎一样,也是一堆层的统一视角,唯一区别就是容器最上面那一层是可读可写的

  1. 仓库

集中存放镜像文件的场所

Docker安装

安装依赖
sudo yum install -y yum-utils  device-mapper-persistent-data  lvm2
sudo yum-config-manager  --add-repo   https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io

这里第三个命令时出现了

问题 1: problem with installed package podman-2.0.5-5.module_el8.3.0+512+b3b58dca.x86_64
  - package podman-2.0.5-5.module_el8.3.0+512+b3b58dca.x86_64 requires runc >= 1.0.0-57, but none of the providers can be installed
  - package podman-2.2.1-7.module_el8.3.0+699+d61d9c41.x86_64 requires runc >= 1.0.0-57, but none of the providers can be installed
  - package containerd.io-1.4.4-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-68.rc92.module_el8.3.0+475+c50ce30b.x86_64
  - package containerd.io-1.4.4-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.0-68.rc92.module_el8.3.0+475+c50ce30b.x86_64
  - package containerd.io-1.4.4-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-70.rc92.module_el8.3.0+699+d61d9c41.x86_64
  - package containerd.io-1.4.4-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.0-70.rc92.module_el8.3.0+699+d61d9c41.x86_64
  - cannot install the best candidate for the job
  - package runc-1.0.0-64.rc10.module_el8.3.0+479+69e2ae26.x86_64 is filtered out by modular filtering
 问题 2: problem with installed package buildah-1.15.1-2.module_el8.3.0+475+c50ce30b.x86_64
  - package buildah-1.15.1-2.module_el8.3.0+475+c50ce30b.x86_64 requires runc >= 1.0.0-26, but none of the providers can be installed
  - package buildah-1.16.7-4.module_el8.3.0+699+d61d9c41.x86_64 requires runc >= 1.0.0-26, but none of the providers can be installed
  - package docker-ce-3:20.10.6-3.el8.x86_64 requires containerd.io >= 1.4.1, but none of the providers can be installed
  - package containerd.io-1.4.3-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-70.rc92.module_el8.3.0+699+d61d9c41.x86_64
  - package containerd.io-1.4.3-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.0-70.rc92.module_el8.3.0+699+d61d9c41.x86_64
  - package containerd.io-1.4.3-3.2.el8.x86_64 conflicts with runc provided by runc-1.0.0-70.rc92.module_el8.3.0+699+d61d9c41.x86_64
  - package containerd.io-1.4.3-3.2.el8.x86_64 obsoletes runc provided by runc-1.0.0-70.rc92.module_el8.3.0+699+d61d9c41.x86_64
  - package containerd.io-1.4.4-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-70.rc92.module_el8.3.0+699+d61d9c41.x86_64
  - package containerd.io-1.4.4-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.0-70.rc92.module_el8.3.0+699+d61d9c41.x86_64
  - cannot install the best candidate for the job
  - package containerd.io-1.4.3-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-68.rc92.module_el8.3.0+475+c50ce30b.x86_64
  - package containerd.io-1.4.3-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.0-68.rc92.module_el8.3.0+475+c50ce30b.x86_64
  - package containerd.io-1.4.3-3.2.el8.x86_64 conflicts with runc provided by runc-1.0.0-68.rc92.module_el8.3.0+475+c50ce30b.x86_64
  - package containerd.io-1.4.3-3.2.el8.x86_64 obsoletes runc provided by runc-1.0.0-68.rc92.module_el8.3.0+475+c50ce30b.x86_64
  - package containerd.io-1.4.4-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-68.rc92.module_el8.3.0+475+c50ce30b.x86_64
  - package containerd.io-1.4.4-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.0-68.rc92.module_el8.3.0+475+c50ce30b.x86_64
  - package runc-1.0.0-56.rc5.dev.git2abd837.module_el8.3.0+569+1bada2e4.x86_64 is filtered out by modular filtering
  - package runc-1.0.0-64.rc10.module_el8.3.0+479+69e2ae26.x86_64 is filtered out by modular filtering

可以用下面这命令

yum erase podman buildah

之后再重试第三个命令

再安装下面两个
sudo yum install docker-ce docker-ce-cli
启动
sudo systemctl start docker

在这里插入图片描述
安装完成!

阿里云镜像加速器配置

打开阿里云镜像服务在这里插入图片描述

选择自己要用的系统,这里我选的时centos

修改配置文件

vim /etc/docker/daemon.json

这里可能没有这个文件,vim会新建一个

{
  "registry-mirrors": ["https://****.mirror.aliyuncs.com"]
}

在文件中配置地址,然后重启服务

systemctl daemon-reload
systemctl restart docker

查看docker信息
在这里插入图片描述
最后测试

docker run hello-world

run执行

在这里插入图片描述

docker为什么比vm快

(1)docker有着比虚拟机更少的抽象层。由于docker不需要实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker在效率上有明显提升
(2)docker利用的是宿主机的内核。因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统
在这里插入图片描述

docker常用命令

  • 帮助命令
docker version     ----版本信息
docker info		   ----详细信息
docker --help	   
  • 镜像命令
docker images	---列出本地主机上的镜像
-a:列出本地所有镜像
-q:只显示镜像id
--digests:显示镜像摘要信息
--no-trunc:显示完整的镜像信息

docker search  镜像名	
docker pull  镜像名
docker rmi  镜像名ID   删除镜像
删除单个		-docker rmi -f 镜像
删除多个		-docker rmi 
删除全部
  • 容器命令
    要有镜像才可以创建容器

    新建并运行容器 docker run -it id在这里插入图片描述

  • 列出当前所有正在运行的容器

docker ps
  • 退出容器
exit 容器停止退出
ctrl+P+Q   容器不停止退出
  • 启动容器
docker start 容器名
  • 重启容器
docker restart 容器名
  • 停止容器
docker stop 容器名
  • 强制停止容器
docker kill 容器名
  • 删除已停止的容器
docker rm 容器名
一次删除多个容器
docker rm-f ${docker -ps-a -q}

启动守护式容器

docker run -d 容器名

在这里插入图片描述

发现容器已经退出了,很重要的说明一点:docker容器后台运行,就必须有一个前台进程

查看容器日志

docker logs -f -t --tail 容器ID

查看容器内的进程

docker top 容器ID

查看容器内的细节

docker inspect 容器ID

进入正在运行的容器并以命令行交互

docker attach 容器ID   ----直接进入容器启动命令的终端,不会启动新的进程
docker exec -t 容器ID 执行命令   ----在容器中打开新的终端,可以启动新的进程

从容器拷贝文件到主机上

docker cp 容器ID:容器内路径 目的主机路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值