Document

what 什么是docker?

what 什么是docker

 

 

 

dockker就想它的logo一样,docker是一只大鲸鱼,然后每个镜像container就是对应的集装箱
docker是一款用go语言开发的容器
docker的核心思想就是隔离,通过隔离机制,既可以保障每个集装箱里面的东西是互不影响的,也可以将服务器的资源压榨到最大程度。
what docker能干嘛?
下图展示了没有docker的部署上线和有docker之后的部署上线差异:

 

 

docker与虚拟机的区别

VM与docker的区别:

VM会虚拟出完整的操作系统(windows、linux),而docker直接运行在宿主机的内核上,没有自己的内核和虚拟硬件,所以更加小巧轻便
VM是操作系统级别的虚拟化,docker是内核级别的虚拟化
VM比docker更重,更消耗资源,所以docker启动速度远远快于VM
docker可以实现快速的运维部署
docker更便捷的升级和扩容/缩容
可以更高效的利用物理机的硬件资源
安装docker
官方安装步骤: https://docs.docker.com/get-started/overview/

安装之前先卸载老版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
使用仓库进行安装:
sudo yum install -y yum-utils

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

安装docker引擎
sudo yum install docker-ce docker-ce-cli containerd.io
1
启动docker
sudo systemctl start docker
1
验证docker引擎是否安装完毕
sh sudo docker run hello-world

docker命令,docker命令大全可以参考如下图所示:

 

 

 

docker启动相关指令
# 查看下载的镜像列表
docker images
# 重新加载docker
sudo systemctl daemon-reload
# 重启docker
sudo systemctl restart docker
# 配置docker国内镜像地址(加快镜像下载速度)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":["https://aa25jngun.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker基础命令

 

 

 

常用镜像命令
# 列出本机所有镜像
docker images
# 搜索镜像(可以在docker hub上进行搜索 <https://hub.docker.com/>)
docker search rabbitmq
# 下载最新镜像
docker pull rabbitmq
# 下载指定版本镜像
docker pull rabbitmq:3.8.11
# 删除镜像
docker rmi -f [IMAGE ID]
docker rmi -f [IMAGE ID] [IMAGE ID] [IMAGE ID]
docker rmi -f ${docker images -aq}

常用容器命令
# 运行容器
docker run [可选参数] image
# 查询容器列表
docker ps [OPSTIONS]
# 退出容器
exit、CTRL+D、CTRL+P+Q
# 删除容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
# 启动&重启容器
docker start [容器id]
docker restart [容器id]
# 停止正在运行的容器
docker stop [容器id]
# 强制停止当前容器
docker kill [容器id]

docker镜像原理
镜像是一种轻量级、可执行的独立软件包。保护代码、运行时、库、环境变量和配置文件。所有应用直接打包docker镜像就可以直接跑起来。

获得镜像方式
从远程仓库下载

 

 

 在下载的时候,可以看到是一层层下载,这个就是联合文件系统UnionFS。

 

 

 

  1. 通过传输拷贝方式获得
  2. 自己通过DockerFile制作镜像

镜像加载原理

 

 

 

提交镜像

提交容器,成为一个新的副本
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

数据容器卷

如前面介绍的,docker是将应用和环境统一进行了打包。如果删除容器的话,数据也会被同时删除,那么,如果我们有数据持久化需求,或者容器之间数据共享的需求,则就需要用到容器数据卷

 

 

 

我们发现, 删除了museCentOS03之后, museCentOS02里的muse01目录下依然有a.txt文件, 这就表明了,museCentOS01~museCentOS03 这三个容器中a.txt文件是互相同步复制备份的。 而并不是同享了某个目录, 大家都去查看一个备份。

 

载操作
执行挂载(把本机路径/home/muse/test, 挂在到centos容器的/bin/bash目录下)
docker run -it -v /home/muse/test:/home centos /bin/bash 

 

 

  

匿名挂载:
通过-v 指定容器内路径
docker run -d -P --name nginx1 -v :/etc/nginx nginx

DockerFile构建镜像
在项目根目录下下创建一个dockerfile文件
编写DockerFile(命令大写)
FROM centos
VOLUME ["muse01","muse02"]
CMD echo "------finish------"
CMD /bin/bash
1
2
3
4
构造镜像
docker build -f /home/{项目根目录}/dockerfile -t muse/centos:1.0
启动自己构建的镜像(通过docker images查询出IMAGE ID为eb78333356a6 )
docker run -it eb78333356a6 /bin/bash
相关资料
docker官方文档:https://docs.docker.com/get-started/
docker hub:https://hub.docker.com/

原文链接:https://blog.csdn.net/qq_32828253/article/details/116886692

 

posted @ 2022-12-20 15:36  从未被超越  阅读(59)  评论(0)    收藏  举报