docker学习笔记

发布时间 2024-01-06 20:49:49作者: 吾爱吃鱼
<h1 style="text-align: start; " id="heading-1"><strong>一、初识Docker</strong></h1><h2 style="text-align: start; " id="heading-2"><strong>(一)什么是Docker</strong></h2><h3 style="text-align: start; " id="heading-3">关于Docker</h3><p style="text-align: start; ">Docker 是一个应用打包、分发、部署的工具,可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,而普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件</p><h3 style="" id="heading-4">打包、分发、部署</h3><p style=""><strong>打包</strong>:就是把你软件运行所需的依赖、第三方库、软件打包到一起,变成一个安装包。</p><p style=""><strong>分发</strong>:你可以把你打包好的“安装包”上传到一个镜像仓库,其他人可以非常方便的获取和安装。</p><p style=""><strong>部署</strong>:拿着“安装包”就可以一个命令运行起来你的应用,自动模拟出一样的运行环境,不管是在 Windows/Mac/Linux。</p><p style="">Docker 包括三个基本概念:</p><p style="">镜像(Image)</p><p style="">  Docker的镜像概念类似于虚拟机⾥的镜像,是⼀个只读的模板,⼀个独⽴的⽂件系统,包括运⾏容器所需的数据,可以⽤来创建新的容器。</p><p style="">  例如:⼀个镜像可以包含⼀个完整的 ubuntu 操作系统环境,⾥⾯仅安装了MySQL或⽤户需要的其它应⽤程序。</p><p style="">容器(Container)</p><p style="">  Docker容器是由Docker镜像创建的运⾏实例,类似VM虚拟机,⽀持启动,停⽌,删除等。</p><p style="">  每个容器间是相互隔离的,容器中会运⾏特定的应⽤,包含特定应⽤的代码及所需的依赖⽂件。</p><p style="">仓库(Repository)</p><p style="">  Docker的仓库功能类似于Github,是⽤于托管镜像的</p><p style=""></p><h1 style="text-align: start; " id="heading-5"><strong>二、Docker的安装</strong></h1><h3 style="text-align: start; " id="heading-6"><strong>(一)Centos安装</strong></h3><ul><li><p style="text-align: start; "><span style="font-size: 16px; color: rgb(37, 41, 51)">如果机器安装过docker先卸载旧版</span></p></li></ul><pre><code class="language-java"> sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine</code></pre><ul><li><p style=""><span style="font-size: 16px; color: rgb(37, 41, 51)">使用存储库安装</span></p></li></ul><p style="">在新主机上首次安装Docker Engine之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker。</p><p style="">安装<code>yum-utils</code>软件包(提供<code>yum-config-manager</code> 实用程序)并设置<strong>稳定的</strong>存储库。</p><pre><code class="language-java">sudo yum install -y yum-utils

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
</code></pre><ul><li><p style="">安装完成后,运行下面的命令,验证是否安装成功。</p></li></ul><pre><code>docker version
# 或者
docker info</code></pre><h3 style="" id="heading-7"><strong>(二)Centos安装</strong>Ubuntu20.04安装Docker</h3><ul><li><p style="">1.更新 apt 包索引</p></li></ul><pre><code>sudo apt-get update
</code></pre><ul><li><p style="">2.安装 apt 依赖包,⽤于通过HTTPS来获取仓库</p></li></ul><pre><code>sudo apt-get install \
 apt-transport-https \
 ca-certificates \
 curl \
 gnupg-agent \
 software-properties-common
</code></pre><ul><li><p style="">3.添加 Docker 的官⽅ GPG 密钥</p></li></ul><pre><code>curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
</code></pre><ul><li><p style="">4.通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥</p></li></ul><pre><code>sudo apt-key fingerprint 0EBFCD88
</code></pre><ul><li><p style="">5.使⽤以下指令设置稳定版仓库</p></li></ul><pre><code>sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
</code></pre><ul><li><p style="">6.安装 Docker Engine-Community</p></li></ul><pre><code>sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
</code></pre><ul><li><p style="">7.测试是否安装成功</p></li></ul><pre><code>sudo docker run hello-world</code></pre><ul><li><p style="">8.查看当前安装版本</p></li></ul><pre><code>docker -v

出现
Docker version 23.0.1, build a5ee5
</code></pre><ul><li><p style="">9.启动与停⽌,安装完成Docker后,默认已经启动了docker服务。</p></li></ul><pre><code># 启动docker
$ sudo service docker start
# 重启docker
$ sudo service docker restart
# 停⽌docker
$ sudo service docker stop
</code></pre><h1 style="text-align: start; " id="heading-8"><strong>三、Docker的基本操作</strong></h1><h3 style="" id="heading-9"><strong>(一)Docker镜像</strong>操作</h3><pre><code class="language-java">##列出本地images
docker images
$ sudo docker image ls

##含中间映像层
docker images -a

##下载Redis官方最新镜像,相当于:docker pull redis:latest
docker pull redis

##下载仓库所有Redis镜像
docker pull -a redis

##单个镜像删除,相当于:docker rmi redis:latest
docker rmi redis

##强制删除(针对基于镜像有运行的容器进程)
docker rmi -f redis

##多个镜像删除,不同镜像间以空格间隔
docker rmi -f redis tomcat nginx

##删除本地全部镜像
docker rmi -f $(docker images -q)



</code></pre><p style=""></p><pre><code>docker images  #查看所有本地主机的镜像
docker search 镜像名           #搜索镜像
docker pull 镜像名 [标签]      #下载镜像(如果不写tag,默认是latest)
docker rmi 镜像名 [标签]       #删除镜像    docker rmi -f $(docker images -aq)  删除全部镜像
docker tag  镜像名:版本   新镜像名:版本    #复制镜像并且修改名称
docker commit  -a "xxx"  -c "xxx" 镜像ID 名字:版本   #提交镜像
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;

docker load -i    /xxx/xxx.tar         #导入镜像
docker save -o   /xxx/xxx.tar          #保存一个镜像为一个tar包
</code></pre><p style=""></p><p style=""></p><p style=""></p><h3 style="" id="heading-10"><strong>(二)Docker容器</strong>操作</h3><pre><code>##新建并启动容器,参数:-i  以交互模式运行容器;-t  为容器重新分配一个伪输入终端;--name  为容器指定一个名称
docker run -i -t --name mycentos

##后台启动容器,参数:-d  已守护方式启动容器
docker run -d mycentos

##启动一个或多个已经被停止的容器
docker start redis

##重启容器
docker restart redis

##进入容器
docker exec -i -t  centos /bin/bash

##查看正在运行的容器
docker ps

##查看正在运行的容器的ID
docker ps -q

##查看正在运行+历史运行过的容器
docker ps -a

##显示运行容器总文件大小
docker ps -s

##停止一个运行中的容器
docker stop redis

##杀掉一个运行中的容器
docker kill redis

##删除一个已停止的容器
docker rm redis

##删除一个运行中的容器
docker rm -f redis

##删除多个容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm

## -l 移除容器间的网络连接,连接名为 db
docker rm -l db

## -v 删除容器,并删除容器挂载的数据卷
docker rm -v redis
</code></pre><p style=""></p><pre><code>docker run [可选参数] image 命令 #启动容器(无镜像会先下载镜像)
#参数说明
--name = "Name"   容器名字
-c   后面跟待完成的命令
-d   以后台方式运行并且返回ID,启动守护进程式容器
-i   使用交互方式运行容器,通常与t同时使用
-t   为容器重新分配一个伪输入终端。也即启动交互式容器
-p   指定容器端口    -p 容器端口:物理机端口  映射端口
-P   随机指定端口
-v   给容器挂载存储卷

docker build  #创建镜像        -f:指定dockerfile文件路径   -t:镜像名字以及标签
docker logs 容器实例的ID          #查看容器日志
docker rename 旧名字  新名字      # 给容器重新命名
docker top    容器实例的ID                  #查看容器内进程
docker ps -a                    #列出所有容器(不加-a就是在运行的)
docker rm      容器实例的ID                 #删除容器(正在运行容器不能删除,除非加-f选项)
docker kill  容器实例的ID        #杀掉容器
docker history   容器实例的ID    #查看docker镜像的变更历史
docker start 容器实例的ID        #启动容器
docker restart 容器实例的ID       #重启容器
docker stop 容器实例的ID         #停止正在运行的容器
docker attach /docker exec  容器实例的ID   #同为进入容器命令,不同的是attach连接终止会让容器退出后台运行,而exec不会。并且,docker attach是进入正在执行的终端,不会情动新的进程,而docker exec则会开启一个新的终端,可以在里面操作。
docker image inspect  容器名称:容器标签       #查看容器内源数据
docker cp  容器id:容器内路径   目的主机路径           #从容器内拷贝文件到主机(常用)或者从主机拷贝到容器(一般用挂载)
exit                           #直接退出容器
crlt + P + Q                   #退出容器但是不终止运行
</code></pre><h3 style="" id="heading-11">(三)Docker帮助命令</h3><ul><li><p style=""><strong>1、帮助命令。</strong></p></li></ul><pre><code>docker version     #显示docker详细信息
docker info       #显示docker的系统信息,包括镜像和容器的数量
docker --help     #docker帮助命令手册
</code></pre><p style=""><br>————————————————</p><p style="">作者:Mruce09蔡<br>链接:<a target="_blank" rel="noopener noreferrer nofollow" href="https://juejin.cn/post/7114255169306492965来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。">https://juejin.cn/post/7114255169306492965<br>来源:稀土掘金<br>著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。</a></p><p style="text-align: start; "></p><p style="text-align: start; ">————————————————</p><p style="">版权声明:本文为CSDN博主「北极的三哈」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。</p><p style="">原文链接:<a target="_blank" rel="noopener noreferrer nofollow" href="https://blog.csdn.net/m0_68744965/article/details/129147628">https://blog.csdn.net/m0_68744965/article/details/129147628</a></p><p style="text-align: start; "></p><p style="text-align: start; "></p><p style="text-align: start; "></p><p style="text-align: start; "></p><p style="text-align: start; "></p><p style="text-align: start; "></p>