docker学习1--docker基础学习

本文围绕Docker展开,介绍了其安装步骤,包括删除旧版本、设置镜像仓库等;阐述了底层原理,如工作方式及比虚拟机快的原因;列举了常用的镜像和容器命令;通过安装Nginx、Tomcat、部署es+kibana等练习展示应用;还讲解了镜像原理和联合文件系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

docker是容器技术,在容器技术没有出现之前,我们都是使用虚拟机技术
虚拟机:虚拟化技术,在Windows中安装一个VM,通过这个软件可以虚拟出一台或者多台电脑,笨重
docker:也是一种虚拟化技术

vm:Linux centos原生镜像(一个电脑),隔离,需要开启多个虚拟机,几个G大小,启动需要几分钟
docker:隔离,镜像(最核心的环境4M大小)小巧,运行镜像就可以了,几M、KB 秒级启动
1、先删除之前安装的docker版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
2、需要的安装包(基本环境)
yum install -y yum-utils
3、设置阿里镜像仓库
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、更新yum软件包索引
yum  makecache fast
5、安装最新docker
yum install docker-ce docker-ce-cli containerd.io
6、启动docker
systemctl start docker
#查询版本
docker version
7、运行helloworld查看
docker run hello-world

在这里插入图片描述

8、查看一下下载的helloworld镜像

在这里插入图片描述

9、设置国内镜像源,

创建 /etc/docker/daemon.json文件

{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
systemctl restart docker.service

国内加速地址有:

Docker中国区官方镜像
https://registry.docker-cn.com

网易
http://hub-mirror.c.163.com

ustc
https://docker.mirrors.ustc.edu.cn

中国科技大学
https://docker.mirrors.ustc.edu.cn

底层原理

docker是怎么工作的

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

Docker为什么比VM快?

1、Docker有着比虚拟机更少的抽象层.
2、docker利用的是宿主机的内核,vm需要是Guest Os.
所以说,新建一个容器的时候,docker不需要想虚拟机一样重新加载一个操作系统内核,避免引导。虚拟机是加载Guest O5,分钟级别的,而docker是利用宿主机的操作系统吗,省略了这个复杂的过程,秒级!

常用命令

镜像命令

docker images 查看所有本地的主机上的镜像

# docker images
解释标签:
REPOSITORY  镜像的仓库源
TAG         镜像的标签
IMAGE ID    镜像的id
CREATED     镜像的创建时间
SIZE        镜像的大小
#可选项
-a,--all             列出所有镜像
-q, --quiet        只显示镜像的ID

docker search 搜索镜像
在这里插入图片描述

可选项
 -f, --filter filter
docker search mysql -f=stars=3000  #根据收藏数来搜索

docker pull 下载镜像
在这里插入图片描述

docker rmi 删除镜像
docker rmi -f  容器ID  #删除指定ID的镜像
docker rmi -f  容器ID 容器ID 容器ID #删除多个容器ID
docker rmi -f  $(docker images -aq)  #删除所有的镜像

容器命令

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

docker pull centos

新建容器并启动

docker run [可选参数] image

#参数说明
--name="Name" 容器名字 Tomcat1 Tomcat2,用来区分容器
-d             后台方式运行
-it           使用交互方式运行,进入容器查看内容
-p            指定容器的端口  -p   8080:8080
    -p  ip:主机端口:容器端口
    -p  主机端口:容器端口(常用)
    -p  容器端口
    容器端口
-P         随机指定容器端口
# 测试,启动并进入容器
[root@localhost /]#docker run -it centos /bin/bash
[root@e4edddd54575 /]#  ls  #查看容器内的centos,基础版本,很多命令不完善

#从容器中退出
[root@e4edddd54575 /]# exit

列出所有运行的容器

#docker ps 命令
空 #列出当前正在运行的容器
-a #列出当前正在运行容器+历史运行过的容器
-n=? #显示最近创建的容器,例如 -n=1,最新创建的容器
-q #只显示容器的编号

退出容器

exit  #直接停止容器并退出
Ctrl+P+Q  #容器不停止退出

删除容器

docker rm 容器id        #删除指定的容器
docker rm  -f  $(docker ps -aq)  #删除所有的容器

启动和停止容器

docker start 容器ID    #启动容器
docker restart 容器id  #重启容器
docker stop 容器id     #停止当前正在运行的容器
docker kill 容器id     #强制停止当前容器

其他常用命令

后台启动容器

# docker run -d 镜像名
[root@localhost /]# docker run -d centos
#问题docker ps,发现centos停止了
#常见的坑,docker日容器使用后运行,就必须要一个前台进程,docker发现没有应用,就会自动停止

显示日志

docker logs -tf --tail 容器id
-tf            #显示日志
--tail num     #要显示日志条数
[root@localhost /]# docker logs -tf --tail 10 dedfd8878

查看容器中进程信息

#命令  docker top 容器id
[root@localhost /]# docker top dce898989

查看镜像元数据

#命令
docker inspect 容器id

[root@localhost /]# docker inspect dce343434

进入当前正在运行的容器

#我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
#命令1
docker exec -it 容器id  bashShell

#测试
[root@localhost /]# docker exec -it dce787878 /bin/bash

#命令2
docker attach 容器id

#测试
[root@localhost /]# docker attach dce343434

docker exec   #进入容器后开启一个新的终端,可以在里面操作
docker attach # 进入容器正在执行的终端,不会启动新的进程

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

docker cp 容器id:容器内路径  目的主机路径

[root@localhost /]# docker cp b4343343:/home/test.java /home

练习

docker 安装Nginx

1、搜索镜像 search 建议大家去dockerhub搜索,可以看到帮助文档
2、下载镜像 pull
3、运行测试
#查看本地镜像

[root@localhost wyh]#docker images

#运行Nginx

[root@localhost wyh]# docker run -d --name nginx01 -p 3344:80 nginx
[root@localhost wyh]# docker ps

#测试

[root@localhost wyh]# curl localhost:3344

#进入容器

[root@localhost wyh]# docker exec -it nginx01 /bin/bash

#查看配置文件

root@343434323:/#whereis nginx

问题:每次改动Nginx配置文件,都需要进入容器内部,我们可以在容器外部提供一个映射路径,达到容器修改文件名,容器内部就可以自动修改,-v 数据卷!

安装Tomcat

docker pull tomcat
docker run -d -p 3355:8080 --name tomcat01 tomcat

#测试访问没有问题
#进入容器

docker exec -it tomcat01 /bin/bash

#发现问题,1、Linux命令少了,2、没有webapps,阿里云镜像的原因,默认是最小的镜像,所有不必要的都剔除,保证最小可运行的环境

部署es+kibana

#es 暴露的端口很多
#es 十分的耗内存
#es 的数据一般需要放置到安全目录,挂载
#启动elasticsearch

docker run -d --name elasticsearch -p 9200:9200  -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2

#查看CPU状态

docker stats

#增加内存限制,修改配置文件 -e 环境配置修改

docker run -d --name elasticsearch -p 9200:9200  -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2

将镜像发布到dockerhub上

1、登录docker
在这里插入图片描述
2、发布
在这里插入图片描述

镜像原理和联合文件系统

镜像是什么

镜像是一种轻量级,可执行的独立软件包,用来打包软件运行环境和基本运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。

docker镜像加载原理

UnionFS(联合文件系统)
Union文件系统(UnionFs)是一种分层,轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层叠加,同时可以将不同目录挂在到同一个虚拟文件系统下,UnionFS文件系统是docker镜像的基础,镜像可以通过分层进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像

特性:一次同时加载多个文件系统,但从外面看,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终文件系统会包含所有底层的文件和目录

docker镜像加载原理
docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。
bootfs(boot file system)主要包含bootloader和kernel,BootLoader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统,在docker镜像的最底层是bootfs。.这一层与我们典型的Linux/Unix系统是一 样的 ,包含boot加载器和内核。当boo加载完成
之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs.
rootfs (root file system) . 在bootfs之上。包含的就是典型Linux系统中的/dev, /proc, /bin, /etc等标准目录和文件。rootfs就是
各种不同的操作系统发行版,比如Ubuntu , Centos等等。
特点:
docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部,这一层就是我们说的容器层,容器之下的叫镜像层。
在这里插入图片描述

commit镜像

docker commit -m="提交的描述信息" -a="作者" 容器id  目标镜像名:[tag]

测试
启动Tomcat
默认的Tomcat webapps下没有文件。拷贝基本文件进去
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值