Docker知识点总结

二、Docker基本命令:

Docker支持CentOs 6 及以后的版本;
CentOs7系统可以直接通过yum进行安装,安装前可以

1、查看一下系统是否已经安装了Docker:

                yum list installed | grep docker

2、安装docker:

                yum install docker -y

        -y 表示自动确认,中途就不需要确认了,安装成功如下:

3、卸载docker:

        把这三个都卸载掉:

 4、查看docker版本:

                docker --version / docker -v

5、安装之后启动Docker服务:

                systemctl start docker 或者 service docker start

6、停止:

                systemctl stop docker 或者 service docker stop

7、重启:

                systemctl restart docker 或者 service docker restart

8、检查docker进程的运行状态:

                systemctl status docker 或者 service docker status

9、查看docker进程:

                ps -ef | grep docker

10、查看docker系统信息:

                docker info

11、查看所有的帮助信息:

                docker


12、查看某个commond命令的帮助信息:

                docker commond  --help

13、设置开机启动docker:

                systemctl enable docker
 

三、Docker的使用初体验

3.1、Docker的运行机制:

我们知道Docker并不是容器,而只是一个管理容器的引擎;

Docker的底层运行原理:
Docker服务启动→下载镜像→启动该镜像得到一个容器→容器里运行着我们想要的程序;

        我们在linux命令行操作时实质上相当于是docker引擎的客户端client,我们通过客户端发送一些指令,发送给docker daemon(docker里面核心的底部引擎),发送给它之后,docker容器引擎开始解析,首先它会去本地里找有没有这个镜像,如果有的话就直接启动起来这个镜像,得到对应的容器,程序就运行在容器里面;本地仓库没有这个镜像的话就去Registry仓库里找,去下载镜像,Registry是一个仓库,找到之后它就会下载。

3.2、 配置Docker镜像加速器

        默认情况下,将从docker hub(https://hub.docker.com/)上下载docker镜像,现在已经访问不了,所以配置一下镜像加速器:

         中科大镜像加速器(https://docker.mirrors.ustc.edu.cn)

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["镜像加速地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker# 示例
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]	
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3.3、 Docker 镜像相关命令
1、搜索镜像:

         从网络中查找需要的镜像:docker search 镜像名称
         例如: docker search tomcat  搜索tomcat镜像

2、下载镜像:

        从Docker 仓库下载镜像到本地,镜像名称格式为 名称号:版本号,如果版本号不指定则是最新的版本。如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。如果你反复执行pull,它会把这个镜像下载到最新版本。

                 docker pull 镜像名称

                 例如:docker pull  tomcat 


3、运行镜像:

                docker run tomcat     前台运行,前台运行的话 ctrl+c就可以关掉了

                docker run tomcat -d 后台运行,加参数-d

                docker run  镜像的ID号 -d

                docker run  名称号:版本号     -d

        docker run tomcat 报这个错:
        Cannot find /usr/local/tomcat/bin/setclasspath.sh 

解决方案:先下载docker pull tomcat:9.0.56,然后docker run -d tomcat:9.0.56

          镜像启动后你就得到了一个容器,通过ps-ef | grep tomcat查看,检查tomcat镜像是否启动容器成功:

4、显示本地已有的镜像:

                docker images
                docker images -q #查看所有镜像的id

         在列出信息中,可以看到几个字段信息:

  •         REPOSITORY:来自于哪个仓库,比如docker.io/tomcat
  •         TAG:镜像的标记,比如latest
  •         lMAGE ID:镜像的ID号(每一个镜像都有一个唯一的ID)
  •         CREATED:创建时间,表示你这个镜像官方是在什么时候创建的
5、删除镜像:删除本地镜像

              docker rmi 镜像id/名称号:版本号             #删除指定本地镜像
              docker rmi 'docker images -q'                 #删除所有本地镜像

6、查看当前运行的容器:

                 docker ps

  • CONTAINER ID:   容器的ID     
  • IMAGE :  容器是通过什么镜像运行的(是通过Tomcat镜像运行的)           
  • COMMAND: 运行的命令是catalina.sh run         
  • CREATED:  容器是什么时候启动的         
  • STATUS: 运行状态(运行了三小时)             
  • PORTS :  端口是8080(也就是容器里面的Tomcat端口是8080)            
  • NAMES:容器的名称,这个名字是docker引擎自动生成的
7、如何关闭容器:

                docker stop 容器ID/容器的名称

        注意:启动镜像用的是镜像名字或者镜像ID!!!镜像启动后你就得到了一个容器,但是关闭容器实用的容器名字或容器ID 

8、这两个命令都可以查看容器是否在运行:

                ps -ef | grep tomcat    docker ps

3.4、Docker的网络访问机制:

        tomcat镜像启动后你就得到了一个容器,通过ps-ef | grep tomcat查看进程,tomcat镜像启动容器成功:

        但是这个Tomcat不是直接运行在Linux上,而是运行在docker容器中,当然本身也在Linux上,Linux上有一个容器,容器里有一个Tomcat。

        理论上我们应该可以去访问这个Tomcat,我们如果是在虚拟机Linux里面运行着一个Tomcat,那我们可以在浏览器输入IP+端口可以去访问,tomcat的默认端口是8080,但是我们现在访问失败:

        如何去访问Docker中的tomcat呢,这就涉及到了Docker的网络机制 :

  • 容器内的网络服务和外部机器不能直接通信
  • 外部机器和宿主机可以直接通信
  • 宿主机和容器可以直接通信
  • 当容器中的网络服务需要被外部机器访问时,可以将容器中提供服务的端口映射到宿主机的端口上。外部机器访问宿主机的端口,从而间接访问容器的服务
  • 这种操作称为:端口映射

        从客户机上访问容器,需要有端口映射,docker容器默认采用桥接模式与宿主机通信,需要将宿主机的ip端口映射到容器的ip端口上;

        现在我们的浏览器中输入ip+端口 要去访问,我们不能直接访问docker里面的Tomcat,用户在访问的时候首先肯定是访问的Linux,这个Linux然后要转发到Tomcat里面去,我们需要Tomcat和当前Linux做一个端口映射,然后就可以转发进去了。

         docker容器里面的Tomcat的网络通讯与Linux本身采用一种网络桥接模式来通讯的,桥接模式通讯,我们就需要基于一个端口映射才可以让我们访问到docker容器里面的Tomcat。

具体操作如下:

1、我们先关闭tomcat容器: docker stop 215e46e97685

2、关闭容器后,重新启动容器:docker run -d -p 8080:8080 tomcat:9.0.56

         加上参数-p,意思是把你当前Linux上的某一个端口映射到容器里面的某一个端口,这样就可以实现端口映射:我们浏览器访问Linux里面的8080,然后Linux里的8080转发到容器里的8080,这样我们就可以实现访问了

3、我们再来查看一下运行着的容器 : docker ps 

         tomcat进程正在运行: ps -ef | grep tomcat

       总结:docker ps     ps -ef | grep tomcat  这两种方式都可以查看tomcat是否在运行。

4、我们现在再来访问试试:

 3.5、进入docker容器内部:

        前面我们已经把Tomcat镜像启动了,接下来我们进入Docker容器,看一下容器里面有一些什么东西:

        进入容器:  打开一个标准的输入流分配到一个虚拟的控制台,然后在这个控制台上执行bash就可以进入docker容器的命令行。简单点其实就是进入docker容器的命令行

                   docker exec -it 容器id  bash

  •          其中i表示交互式的、保持标准输入流打开;
  •          t表示虚拟控制台,分配到一个虚拟控制台;
  •          bash:linux的shell命令

          docker exec -it 8fca7219b9a8 bash:

        退出容器:exit

                                                ​​​​​​​ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/506398.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【精华】麻省理工学院MIT技术双月刊(Bimonthly MIT Technology Review)2024年3/4月刊荐书 Book reviews

本期内容概览见博客&#xff1a;2024年3/4月刊内容概览 Book Reviews 1. Read Write Own: Building the Next Era of the Internet By Chris Dixon (Random House, 2024) With the demise of Twitter, many have advocated for a decentralized alternative for social medi…

gofly接口入参验证使用介绍

接口传入的参数做相关性质验证是开发中较为常用&#xff0c;gofly框架内置校验工具&#xff0c;提供开发效率&#xff0c;开发接口简单调用即可实现验证&#xff0c;下面介绍gofly框架数据验证设计思路及使用方法。 gofly框架提供了功能强大、使用便捷、灵活易扩展的数据/表单…

笨办法学 Python3 第五版(预览)(一)

原文&#xff1a;Learn Python the Hard Way, 5th Edition (Early Release) 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 模块 1&#xff1a;Python 入门 练习 0&#xff1a;准备工作 这个练习没有代码。这只是你完成的练习&#xff0c;让你的计算机运行 Python。…

flurl升级之后没有FlurlNewtonsoftJsonSerializer

新建NewtonsoftJsonSerializer.cs /// <summary> /// ISerializer implementation based on Newtonsoft.Json. /// Default serializer used in calls to GetJsonAsync, PostJsonAsync, etc. /// </summary> public class NewtonsoftJsonSerializer : IJsonSerial…

【PDF技巧】网上下载的pdf文件怎么才能编辑

不知道大家有没有遇到过网上下载的PDF文件不能编辑的情况&#xff0c;今天我们来详细了解一下导致无法编辑的原因即解决方法有哪些。 第一种原因&#xff1a;PDF文件中的内容是否是图片&#xff0c;如果确认是图片文件&#xff0c;那么我们想要编辑&#xff0c;就可以先使用PD…

程序员把年终复盘交给AI-复利再投

1.复盘重要但不紧急 在做年末总结时&#xff0c;复盘&#xff0c;改进计划&#xff0c;这是我觉得最重要的一段时间&#xff0c;它不紧急&#xff0c;但是极其重要。 年底的复盘就像把今年的收获&#xff0c;转移到一个复利账户里&#xff0c;提取的经验越多&#xff0c;来年…

论文阅读_代码生成模型_CodeLlama

英文名称: Code Llama: Open Foundation Models for Code 中文名称: Code Llama&#xff1a;开放基础代码模型 链接: https://arxiv.org/abs/2308.12950 代码: https://github.com/facebookresearch/codellama 作者: Baptiste Rozire, Jonas Gehring, Fabian Gloeckle, Sten So…

USLE模型-P因子的计算

首先需要下载土地利用类型数据集&#xff0c;查看我的相关文章 对于已有的10种土地类型代码&#xff0c;需要按水土保持措施P值表进行重分类。 10是耕地&#xff0c;且庆阳市坡度10-15度左右&#xff0c;所以赋给了3&#xff08;最好再下个DEM计算一下&#xff0c;这里就统一用…

ue4.27 发现 getRandomReachedLocation 返回 false

把这个玩意儿删掉&#xff0c;重启工程&#xff0c;即可 如果还不行 保证运动物体在 volum 内部&#xff0c;也就是绿色范围内确保 project setting 里面的 navigation system 中 auto create navigation data 是打开的(看到过博客说关掉&#xff0c;不知道为啥) 如果还不行&…

Redis 协议与异步方式

redis pipeline 模式 redis pipeline 是一个客户端提供的机制&#xff0c;与 redis 无关。pipeline 不具备事务性。目的&#xff1a;节约网络传输时间。通过一次发送多条请求命令&#xff0c;从而减少网络传输时间。 时间窗口限流 系统限定某个用户的某个行为在指定的时间范围…

基于Java SSM框架实现众筹平台网站系统项目【项目源码】计算机毕业设计

基于java的SSM框架实现众筹平台网站系统演示 SSM框架 当今流行的“SSM组合框架”是Spring SpringMVC MyBatis的缩写&#xff0c;受到很多的追捧&#xff0c;“组合SSM框架”是强强联手、各司其职、协调互补的团队精神。web项目的框架&#xff0c;通常更简单的数据源。Spring…

【C++】string 类 ( 上)

标准库中的string类 注意&#xff1a; 1. string是表示字符串的字符串类 2. 该类的接口与常规容器的接口基本相同&#xff0c;再添加了一些专门用来操作string的常规操作。 比特就业课 3. string在底层实际是&#xff1a;basic_string模板类的别名&#xff0c;typedef basi…