Docker学习笔记


docker的思想来自于集装箱。
核心思想: 隔离
docker可以通过隔离机制将服务器利用到极致。
虚拟机:在windows中装一个Vmware,通过这个软件可以虚拟出一台或多台电脑,笨重。
虚拟机也是属于虚拟化技术,docker容器技术,也是一种虚拟化技术。
docker,隔离,(最核心的环境,4m+jdk+mysql)十分的小巧,运行镜像就可以了。

docker的作用

·虚拟机技术缺点:
1.资源占用十分多
2.冗余步骤多
3.启动很慢
·容器化技术:
容器化技术不是模拟的一个完整的操作系统
·docker和虚拟机的不同:
·传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
·容器的应用直接运行在宿主机的内核,容器是没有自己的内核的,也没有虚拟我们的 硬件,所以就轻便了。
·每个容器间是互相隔离的,每个容器内都有一个属于自己的文件系统,互不影响。
DevOps(开发、运维)
更快速的交付和部署。
传统:一堆帮助文档、安装程序
Docker:一键镜像发布测试、一键运行
更便捷的升级和扩缩容。
使用了docker之后,我们部署应用就和搭积木一样。
项目打包为一个镜像,扩展服务器A,服务器B。
更简单的系统运维
在容器化之后,开发、测试环境高度一致
更高效的计算资源利用
docker是内核级别的虚拟化,可以在一个物理机上运行很多容器实例,服务器的性能可以被压榨到极致。

docker的基本组成

在这里插入图片描述
镜像(image)
docker镜像就好比一个模板,可以通过这个模板来创建容器服务,tomcat镜像===>run==>tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或项目运行就是在容器中的)。
容器(contanier)
docker利用容器技术,独立运行一个或一组应用,通过镜像来创建的。
启动,停止,删除,基本命令。目前可以将容器理解为一个简易的Linux系统。
仓库(repository)
仓库就是存放镜像的地方。
仓库分为共有仓库和私有仓库。
docker hub(默认是国外的)
阿里云等有容器服务(配置镜像加速)

安装docker

查看云服务器环境。
在这里插入图片描述
系统版本:

[root@tian ~]# cat /etc/os-release
NAME="Alibaba Cloud Linux"
VERSION="3 (Soaring Falcon)"
ID="alinux"
ID_LIKE="rhel fedora centos anolis"
VERSION_ID="3"
PLATFORM_ID="platform:al8"
PRETTY_NAME="Alibaba Cloud Linux 3 (Soaring Falcon)"
ANSI_COLOR="0;31"
HOME_URL="https://www.aliyun.com/"

进入[docker官网]
卸载旧版本docker:

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

在这里插入图片描述
需要的安装包:

yum install -y yum-utils

在这里插入图片描述
在这里插入图片描述
设置镜像的仓库:

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #国外镜像
yum-config-manager --add-repo 
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #阿里云镜像

更新软件包索引

yum makecache

在这里插入图片描述

安装docker相关的 docker-ce社区 ee 企业版

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

一路y就安装成功啦!
在这里插入图片描述
启动docker:

systemctl start docker

使用docker -version查看是否安装成功。
在这里插入图片描述
hello world!

docker run hello-world

在这里插入图片描述
查看下载的镜像:

docker images

在这里插入图片描述
docker卸载:
1.卸载依赖

sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

2.删除资源

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

阿里云镜像加速

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

run的流程和docker原理

在这里插入图片描述
底层原理:
docker是一个Client-Sever结构的系统,docker的守护进程运行在主机上,通过Socket从客户端进行访问。
DockerSever接收到Docker-Client的指令,就会执行这个命令!
在这里插入图片描述
docker为什么比vm块?
1.docker有着比虚拟机更少的抽象层。
在这里插入图片描述
2.docker利用的是宿主主机的内核,vm需要的是Guest Os。
所以说,新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统的内核,避免引导。虚拟机时加载Guest OS,分钟级别的,而docker是利用宿主机的操作系统,省略了这个复杂的过程,秒级。

Docker常用命令

帮助命令

docker version #显示命令
docker info #docker的系统信息,包括容器和镜像的数量
docker 命令 --help #万能命令

在这里插入图片描述
在这里插入图片描述
镜像命令
在这里插入图片描述)
RESPOSITORY 镜像的仓库
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小
#可选项

-a --all #列出所有镜像
-q --quiet #只显示镜像的id

在这里插入图片描述)
docker search #搜索镜像
在这里插入图片描述
在这里插入图片描述
可选项,通过搜索过滤

–filter=STARS=3000
在这里插入图片描述
docker pull #下载镜像
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Digest:签名
docker.io:真实地址
(docker pull mysql == docker pull docker.io/library/mysql:latest)

docker pull 镜像名[:tag]

docker pull mysql:5.7
如果不写tag,默认latest
#分层下载,docker image的核心 联合文件系统
在这里插入图片描述
分层镜像的好处:不会重复下载,极大的节省内存
在这里插入图片描述
只需要跟新根之前不一样的东西。
在这里插入图片描述
删除镜像:docker rmi
在这里插入图片描述

docker rmi -f $(docker images -aq) #删除所有镜像

在这里插入图片描述

docker rmi -f 镜像id 镜像id 镜像id #删除多个镜像

容器的命令

有了镜像,才能创建容器
下载一个centos镜像来测试学习
·新建容器并启动:

docker pull centos

在这里插入图片描述
docker run命令:
docker run [可选参数] image
#参数说明
–name=“Name” #容器名字 tomcat01 tomcat02
-d #后台运行
-it #使用交互方式运行,进入容器查看内容
-p #指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P #随机指定端口
在这里插入图片描述
启动并进入容器。(/bin/bash控制台)
在这里插入图片描述
#查看容器内的centos,基础版本
在这里插入图片描述
退出容器。
在这里插入图片描述
docker ps #命令
#列出当前正在运行的容器
-a #列出当前正在运行的容器+带出历史运行的容器
-n=? #显示最近创建的容器
-q #只显示容器的编号
在这里插入图片描述
在这里插入图片描述
退出容器
exit #直接退出容器并退出
Ctrl+P+Q #容器不停止退出
在这里插入图片描述
删除容器
docker rm 容器id #删除指定容器(不能删除正在运行的容器/强制删除rm -f)
docker rm -f $(docker ps -aq) #删除所有容器
docker ps -a -q|xargs docker rm #删除所有容器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
启动和停止容器
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前正在运行的容器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
#docker使用后台应用,就必须有一个前台进程,docker发现没有应用,就会自动停止。
查看日志命令
在这里插入图片描述

[root@tian /]# docker run -d centos /bin/sh -c "while true;do echo tian;sleep 1;done"
d96e0b15f6cf5571a0e5a3185367549d4c9efd2eb8cdb9505c6b5aeaa59ca2a7
[root@tian /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
d96e0b15f6cf   centos    "/bin/sh -c 'while t…"   7 seconds ago   Up 6 seconds             clever_easley
[root@tian /]# 

在这里插入图片描述
在这里插入图片描述
查看容器中的进程信息
top命令

[root@tian /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
7caf364ff26e   centos    "/bin/sh -c 'while t…"   11 seconds ago   Up 10 seconds             practical_euler
[root@tian /]# docker top 7caf364ff26e
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                153200              153181              0                   00:13               ?                   00:00:00            /bin/sh -c while true;do echo tian;sleep 1;done
root                153290              153200              0                   00:13               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
[root@tian /]# 

在这里插入图片描述
查看数据的元数据
在这里插入图片描述
在这里插入图片描述

[原始课程]

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值