docker一:基础知识

大神"狂神说"免费学习路径:https://www.kuangstudy.com/course

1.docker与vm差异

1.1环境优点

vm虚拟机,虚拟出一整个硬件,运营一个完成的操作系统,然后这个系统上安装和运行软件
docker容器内的应用直接运行在宿主的内容,容器是没有自己的内核的(用服务器内核),每个容器间是相互隔离的,每个容器内都有一个属于自己的文件系统,互不影响

1.2部署优点

应用更快速的交付和部署
传统部署环境:一堆帮助文档,安装程序
Docker优点:
打包镜像发布,一键完成
更便捷的升级和扩缩容
更简单的系统运维:容器化之后,开发,测试环境都是高度一致的
更高效的计算资源利用

1.3Docker为什么比Vm快

1.Docker有着比虚拟机更少的抽象层,由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在Cpu、内存利用率上Docker将会在效率上有明显优势。
2.Docker利用的是宿主机的内核,而不需要Guest OS,因此,当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统,避免了引导、加载操作系统内核这个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的,而Docker由于直接利用宿主机的操作系统则省略了这个过程,因此新建一个Docker容器只需要几秒钟。

2.docker基本概念

镜像(image):好比是一个模板,可以通过这个模板创建容器服务,tomcat镜像===>run===>tomcat1容器(提供服务),通过这个镜像可以创建多个容器(最终服务运行或项目运行就是在容器中的).
容器(container):docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的,启动,停止,删除,基本命令;目前就可以把容器理解为就是一个简易的linux系统
仓库(repository):
 仓库是放镜像的地方
 仓库分为共有仓库和私有仓库
 Docker Hub(默认是国外的访问慢)
 阿里云,华为云…都有容器服务(配置镜像加速!)

3.docker安装

3.1前置准备

https://docs.docker.com/engine/install/centos/ #官方文档地址
环境准备:
 1.需要linux基础
 2.linux服务器
 3.xshell连接工具
环境查看

uname -r

当前内核是3.10以上的,(要求3.0以上)
要求在3.0以上
系统版本centos7(要求7以上),其他系统在官方文档查找
在这里插入图片描述
cat /etc/os-release #查看当前系统

NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

3.2安装

3.2.1.卸载docker旧版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

3.2.2.安装依赖包

sudo yum install -y yum-utils

3.2.3.安装镜像

#国外的地址不推荐太慢了

sudo yum-config-manager \
    --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

百度搜索”阿里云docker的镜像地址”,推荐使用阿里云的,快

sudo yum-config-manager \
    --add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

#更新yum软件包索引(非必须)

yum makecache fast

3.2.4.安装docker相关的引擎

docker-ce社区版(推荐) ee企业版
#默认安装最新版

sudo yum install docker-ce docker-ce-cli containerd.io 

#指定版本安装

sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

3.2.5.启动docker

sudo systemctl start docker

3.2.6.验证是否安装成功

#查看docker是否正确安装

docker version

通过运行hello-world 映像验证 Docker Engine 是否已正确安装

sudo docker run hello-world

在这里插入图片描述

3.2.7.查看下载的镜像

docker images

在这里插入图片描述

3.3.8.卸载docker(了解)

1.卸载依赖

sudo yum remove docker-ce docker-ce-cli containerd.io

2.删除资源(/var/lib/docker 默认资源路径)

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

3.2.9.阿里云镜像加速

登录阿里云===>>控制台===>>产品与服务===>>>弹性计算===>>容器镜像服务
在这里插入图片描述

找到加速配置
在这里插入图片描述

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ebl1n6t6.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

命令分析
创建目录

sudo mkdir -p /etc/docker  

修改配置(用自己阿里云的加速地址,使用他人的容易失效)

sudo tee /etc/docker/daemon.json <<-'EOF'
 { 
"registry-mirrors": ["https://ebl1n6t6.mirror.aliyuncs.com"]
 }
 EOF 

重新加载配置文件

sudo systemctl daemon-reload

启动

sudo systemctl restart docker

4.Run的流程和Docker使用原理

回顾hello word流程
在这里插入图片描述
在这里插入图片描述

run一个不存在的镜像时,他会去仓库里找,找不到后返回镜像不存在
在这里插入图片描述

Docker是如何工作的
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问
DockerServer接收到Docker-Client的指令,就会执行这个命令!
在这里插入图片描述

5.常用命令

5.1帮助命令

docker version #显示docker的版本信息
docker info #docker的系统信息包括镜像和容器的数量
docker 命令 --help
官方帮助文档: https://docs.docker.com/engine/reference/run/

5.2镜像命令

5.2.1查看镜像

docker images -a #列出所有镜像
docker images -q #只显示镜像的id
docker images -aq #显示所有镜像的id
在这里插入图片描述
docker images 查看所有本地主机上的镜像
在这里插入图片描述
展示字段分析
repository:镜像的仓库源,下载运行都用这个名称
TAG:镜像的标签
IMAGE ID:镜像的id
CREATED:镜像的创建时间
SIZE:镜像的大小

5.2.2搜索下载镜像

docker search 镜像名称

在这里插入图片描述

搜索过滤(了解)

举例:搜过并过滤收藏大于5000的mysql镜像

docker search mysql --filter=STARS=5000

在这里插入图片描述

5.2.3下载镜像

docker pull 镜像名[:tag]

如果不写tag,默认下载最新的版本

docker pull mysql

在这里插入图片描述

docker pull mysql:5.7 

指定版本下载,版本号必须是官方库里有的
在这里插入图片描述
分层下载:docker的高明之处,之前下载了最新的,再次下载5.7版本的时候,重复文件不会再进行下载
下载镜像后查看,有版本号的显示版本号,最新版本的显示latest
在这里插入图片描述

5.2.4删除镜像

docker rmi -f 镜像id/名称 一般采用id删除
docker rmi -f 镜像id 空格 镜像id 空格 镜像id 一次删除多个镜像
docker rmi -f ${docker images -aq} 删除所有镜像
在这里插入图片描述

5.3容器命令

说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习

docker pull centos

5.3.1新建容器并启动

docker run [可选参数] image
#参数说明
**–name=”Name”**容器名字,如tomcat1,tomcat2,用来区分容器
-d    后台方式运行
-it    使用交互方式运行,进入容器查看内容
-p   指定容器的端口 -P 8080:8080映射容器端口
举例:

docker run -it centos /bin/bash	
docker run -it --name cenos000000 id

/bin/bash意思是指定控制台路径默认为/bin/bash
在这里插入图片描述
退出命令(从容器内部退出)
exit容器停止并退出
Ctrl+p+Q (ctrl+p+shift+q) q要大写,容器不停止退出

后台运行并指定容器名称

docker run -d --name="centos001" centos /bin/bash

在这里插入图片描述
常见坑
docker run -d centos 后台启动命令
启动后用docker ps查看容器,发现没有在运行,因为-d是后台运行命令需要前台进程支持,后台运行的时候因为centos内没有任何启动的应用,所以自动停掉;
再比如nginx启动后发现自己没有提供服务就会自动挂掉
在这里插入图片描述

5.3.2查看容器

docker ps 查看运行中的容器
docker ps -a 查看正在运行过的容器加历史运行过的容器
docker ps -n=? 显示最近运行的?个容器,?为数字
docker ps -q 只显示正在运行容器的编号
在这里插入图片描述

5.3.3删除容器

docker rm 容器id         指定删除,无法删除运行中的容器
docker ps -a -q|xargs docker rm  全部删除

5.3.4启停容器

docker start容器id   启动
docker restart容器id  重启
docker stop 容器id     停止
docker kill 容器id     强制停止,在stop报错后使用

5.3.5查看容器日志

当前centos内无进程,人工模拟日志

docker run -d centos /bin/sh -c "while true;do echo 6666;sleep 1;done" 

显示日志
-t  #表示时间戳
-f  #为动态打印
-tf    #显示时间戳格式日志,持续更新(常用)

docker logs -tf 容器id

–tail ? #显示指定行数日志

docker logs -tf --tail 10 容器id

查看容器内的进程信息

docker top 容器id

在这里插入图片描述

5.3.6查看容器的镜像

docker inspect 容器id

在这里插入图片描述

5.3.7进入当前正在运行的容器

通常容器采用后才运行的方式,但有时候我们需要进去修改一些配置
方式一:
docker exec -it 容器id bashShell(默认的命令行) -it以交互模式运行

docker exec -it 3b56de072c69 /bin/bash

在这里插入图片描述
方式二:
docker attch 容器id

docker attach 3b56de072c69

在这里插入图片描述
区别:
docker exec     #进入容器后开启一个新的终端,可以在里面操作
docker attach   #进入容器正在执行的终端,不会启动新的进程

5.3.8从容器内拷贝文件到主机上面

docker cp 容器id:容器内路径 本机路径
进入容器内,创建个文件test.sh,退出容器
在这里插入图片描述
查看本机home下是没有这个文件的
在这里插入图片描述
复制容器文件,复制命令不受容器状态影响,就算容器已经停止运行也可以复制文件

docker cp 3b56de072c69:/home/test.sh /home

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44934430/article/details/119907024