Docker 基础

文章目录

    • 1.Docker概述
    • 2.Docker安装
    • 3.Docker与虚拟机VM
    • 4.Docker命令
      • 1.帮助命令
      • 2.镜像命令
        • 1.images
        • 2.search
        • 3.pull
        • 4.rmi
      • 3.容器命令
        • 1.run
        • 2.ps
        • 3.rm
        • 4.start
        • 5.stop
        • 6.restart
        • 7.kill
      • 4.常用其他命令
        • 1.后台启动容器
        • 2.查看日志(logs)
        • 3.查看进程信息(top)
        • 4.查看镜像源数据(inspect)
        • 5.进入当前运行容器(exec)
        • 6.连接运行中容器(attach)
        • 7.数据拷贝(cp)
    • 5.小结

1.Docker概述

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

  • 传统:开发jar,运维来做。
  • 现在:开发打包部署,一套流程。

2.Docker安装

环境准备:

  1. 需要会一点Linux的基础
  2. CentOS 7
  3. 使用Xshell连接远程服务器

Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

1.卸载旧的版本

sudo 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.设置镜像的仓库(阿里云)

sudo yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新软件包索引

yum makecache fast

4.安装docker

sudo yum install docker-ce docker-ce-cli containerd.io

5.启动docker

sudo systemctl start docker

6.查看是否安装成功

docker version

在这里插入图片描述
7.验证是否正确安装

docker run hello-world

在这里插入图片描述

8.查看一下下载的hello-world镜像

docker images

在这里插入图片描述

9.卸载docker

# 1.卸载依赖
yum remove docker-ce docker-ce-cli containerd.io# 2.删除资源
rm -rf /var/lib/docker

10.配置阿里云镜像加速器

登录阿里云,找到容器镜像服务,点击镜像加速器,然后依次执行命令即可。

在这里插入图片描述

# 应该只能使用自己的
sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://i2902kmw.mirror.aliyuncs.com"]
}
EOFsudo systemctl daemon-reloadsudo systemctl restart docker

3.Docker与虚拟机VM

docker Run的流程
在这里插入图片描述
docker底层原理
Docker是一个 Client-Server 结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问。

docker与虚拟机区别

Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。使用 Docker 可以不修改应用程序代码,不需要开发人员学习特定环境下的技术,就能够将现有的应用程序部署在其它机器上。
在这里插入图片描述
虚拟机也是一种虚拟化技术,它与 Docker 最大的区别在于它是通过模拟硬件,并在硬件上安装操作系统来实现。
在这里插入图片描述

4.Docker命令

1.帮助命令

# 查看基本信息
docker version# 系统信息,包括镜像和容器数
docker info# 万能命令
docker 命令 --help

2.镜像命令

1.images
# 列出本地镜像
docker images # 具体使用方法可以输入命令 docker images --helpOptions:-a, --all             Show all images (default hides intermediate images)--digests         Show digests-f, --filter filter   Filter output based on conditions provided--format string   Format output using a custom template:'table':            Print output in table format with column headers (default)'table TEMPLATE':   Print output in table format using the given Go template'json':             Print in JSON format'TEMPLATE':         Print output using the given Go template.Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates--no-trunc        Don't truncate output-q, --quiet           Only show image IDs
2.search
# 从Docker Hub查找镜像
docker search [OPTIONS] TERM

OPTIONS说明:

  • -f <过滤条件>:列出收藏数不小于指定值的镜像。

在这里插入图片描述
参数说明:

  • NAME: 镜像仓库源的名称
  • DESCRIPTION: 镜像的描述
  • OFFICIAL: 是否 docker 官方发布
  • stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
  • AUTOMATED: 自动构建。
3.pull
# 从镜像仓库中拉取或者更新指定镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]# 不写tag,默认就是最新版本
# 拉取最新的java镜像
docker pull java# 从Docker Hub下载REPOSITORY为java的所有镜像
docker pull -a java# 拉取指定版本
docker pull mysql:5.7
4.rmi
# 删除本地一个或多个镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]# 举例
# 删除单个
docker rmi -f 容器id# 删除多个
docker rmi -f 容器id 容器id 容器id...# 删除全部容器
docker rmi -f $(docker images -aq)

OPTION说明:

  • -f :强制删除

在这里插入图片描述

3.容器命令

说明:我们有了镜像才可以创建容器,下载一个centos镜像。

docker pull centos
1.run

新建容器并启动

docker run [可选参数] image# 参数说明
--name="Name" # 容器名字,区分容器
-d            # 后台方式运行
-it           # 使用交互方式允许,进入容器查看内容
-p            # 指定容器的端口-p ip:主机端口:容器端口-p 主机端口:容器端口(常用)-p 容器端口容器端口
-P            # 随机指定端口# 测试,启动并进入容器
[root@iZ0jl2pjllvr5lfp1bkua1Z ~]# docker run -it centos /bin/bash
[root@f1a9e93b0ff6 /]# # 查看内部
[root@f1a9e93b0ff6 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var# 从容器退回主机
exitexit            # 直接退出容器并关闭
Ctrl + P + Q    # 容器不关闭退出
2.ps
# 列出容器
docker ps [OPTIONS]# 列出当前加历史允许过的容器
docker ps -a

OPTIONS说明:

  • -a :显示所有的容器,包括未运行的。
  • -f :根据条件过滤显示的内容。
  • -n :列出最近创建的n个容器。
  • -l :显示最近创建的容器。

在这里插入图片描述
参数说明:

  • CONTAINER ID: 容器 ID
  • IMAGE: 使用的镜像
  • COMMAND: 启动容器时运行的命令
  • CREATED: 容器的创建时间
  • STATUS: 容器状态
  • PORTS: 容器的端口信息和使用的连接类型(tcp\udp)
  • NAMES: 自动分配的容器名称
3.rm
# 删除一个或多个容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]# 删除指定容器,不能删除正确允许的容器,如果强制删除rm -f
docker rm 容器id# 删除所有的容器
docker rm -f $(docker ps -aq)
4.start
# 启动一个或多个已经被停止的容器
docker start [OPTIONS] CONTAINER [CONTAINER...]# 启动
docker start 容器id
5.stop
# 停止一个运行中的容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]# 停止
docker stop 容器id
6.restart
# 重启容器
docker restart [OPTIONS] CONTAINER [CONTAINER...]# 重启
docker restart 容器id
7.kill
# 杀掉一个运行中的容器
docker kill [OPTIONS] CONTAINER [CONTAINER...]# 杀掉
docker kill 容器id

在这里插入图片描述

4.常用其他命令

1.后台启动容器
# 命令 docker run -d 镜像名
docker run -d centos# 问题docker ps 发现 centos停止# 常见的坑, docker 容器使用后台运行, 就必须要有一个前台进程,docker发现没有应用,就会自动停止
# nginx, 容器启动后,发现自己没有提供服务,就会立即停止,就是没有程序

在这里插入图片描述

2.查看日志(logs)
# 获取容器的日志
docker logs [OPTIONS] CONTAINER# 显示容器10条日志
docker logs -tf --tail 10 f272a950b815

OPTIONS说明:

  • -f : 跟踪日志输出
  • –since :显示某个开始时间的所有日志
  • -t : 显示时间戳
  • –tail :仅列出最新N条容器日志
3.查看进程信息(top)
# 查看容器中运行的进程信息,支持 ps 命令参数
docker top [OPTIONS] CONTAINER [ps OPTIONS]# 举例
docker top f272a950b815

在这里插入图片描述

4.查看镜像源数据(inspect)
# 获取容器/镜像的元数据
docker inspect [OPTIONS] NAME|ID [NAME|ID...]# 举例
docker inspect f272a950b815

在这里插入图片描述

5.进入当前运行容器(exec)
# 在运行的容器中执行命令
# 进入容器后开启一个新的终端,可以在里面操作
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]# 举例
docker exec -it f272a950b815 /bin/bash
6.连接运行中容器(attach)
# 连接到正在运行中的容器
# 进入容器正在执行的终端,不会启动新的进程
docker attach [OPTIONS] CONTAINER# 举例
docker attach f272a950b815
7.数据拷贝(cp)
# 用于容器与主机之间的数据拷贝
docker cp 容器id:容器内路径    目的地主机路径docker cp 3ff49a3c1032:/home/test.java /home

在这里插入图片描述

5.小结

学习docker过程中,搞不清镜像与容器的关系,把它们搞混淆分不清。
简单点理解:docker容器是由docker镜像创建的运行实例。

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

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

相关文章

使用proteus进行主从JK触发器仿真失败原因的分析

在进行JK触发器的原理分析的时候&#xff0c;我首先在proteus根据主从JK触发器的原理进行了实验根据原理图&#xff0c;如下图&#xff1a; 我进行仿真&#xff0c;在仿真的过程中&#xff0c;我向电路图中添加了外部的置0/1端口&#xff0c;由此在proteus中得到下面的电路图 …

变异系数法

变异系数法是根据统计学方法计算得出系统各指标变化程度的方法&#xff0c;是直接利用各项指标所包含的信息&#xff0c;通过计算得到指标的权重&#xff0c;因此是一种客观赋权的方法。 如果这个指标的变化能够很大影响我们的对象就权重很大 需要进行预处理 指标正向化 指…

红队打靶练习:DERPNSTINK: 1

目录 信息收集 1、arp 2、netdiscover 3、nmap 4、nikto 5、whatweb 目录探测 1、gobuster 2、dirsearch WEB get flag1 robots.txt /php/phpmyadmin /temporary /weblog wordpress wpscan扫描 漏洞发现 提权 系统信息收集 mysql登录 john get flag2 s…

DBSCAN聚类模型

目录 介绍&#xff1a; 一、数据 二、建模 三、评价指标 3.1metrics.homogeneity_score 3.2metrics.completeness_score 3.3metrics.v_measure_score 3.4metrics.adjusted_rand_score 3.5metrics.adjusted_mutual_info_score 3.6metrics.silhouette_score 四、画图…

假设与灵敏度分析

灵敏度分析 关系究竟有多敏感&#xff0c;就要进行灵敏度分析 如果你改变了系统参数后&#xff0c;引起这个模型&#xff08;公式&#xff09;输出的变化的程度不大&#xff0c;则说明你的模型稳定性较强&#xff08;即灵敏性较差&#xff09;&#xff0c;反之则反&#xff01…

前端-基础 常用标签-超链接标签( 锚点链接 )

锚点链接 &#xff1a; 点击链接&#xff0c;可以快速定位到 页面中的某个位置 如果不好理解&#xff0c;讲一个例子&#xff0c;您就马上明白了 >>> 这个是 刘德华的百度百科 &#xff0c;可以看到&#xff0c;页面里面有很多内容&#xff0c;那就得有个目录了 …

为什么地中海气候对葡萄最有益?

优质葡萄酒离不开优秀的葡萄品种&#xff0c;更离不开有利的风土优势。云仓酒庄的品牌雷盛红酒LEESON分享熟悉葡萄酒知识的朋友都听说过不少葡萄酒产区是被老天爷眷顾的地中海气候。 为什么地中海气候对葡萄种植最有益呢&#xff1f;云仓酒庄的品牌雷盛红酒LEESON分享因为这是一…

5g视频短信群发助力汽车销售!

视频短信群发在汽车销售中具有以下优势&#xff1a; 1.增强品牌形象&#xff1a;通过视频短信&#xff0c;可以向潜在客户展示汽车品牌形象、企业文化和价值观&#xff0c;提升品牌认知度和美誉度。 2.产品展示与介绍&#xff1a;视频短信可以用来详细介绍汽车的特点、功能和优…

React.Children.map 和 js 的 map 有什么区别?

JavaScript 中的 map 不会对为 null 或者 undefined 的数据进行处理&#xff0c;而 React.Children.map 中的 map 可以处理 React.Children 为 null 或者 undefined 的情况。 React 空节点&#xff1a;可以由null、undefined、false、true创建 import React from reactexport …

大模型学习第二课

学习目标&#xff1a; 浦语大模型趣味Demo 学习内容&#xff1a; 学习时间&#xff1a; 20240108 学习产出&#xff1a; InternLM介绍 大模型&#xff1a;人工智能领域钟参数数量巨大、拥有庞大计算能力和参数规模的模型。InternLM模型全链条开源&#xff0c;7B&#xff0c;…

BUUCTF--铁人三项(第五赛区)_2018_rop1

这题是一题标准的rop。先简单查看下保护&#xff1a; 32位程序&#xff0c;黑盒测试下效果&#xff1a; 一上来就是输入&#xff0c;然后结尾会输出Hello,World.看看IDA中具体逻辑如何&#xff1a; 漏洞点主要在vulnerable_function()函数中。老常规栈溢出了。做这种题的思路&a…

Eltima 端口虚拟化软件授权分析

目录 Eltima 端口虚拟化软件 授权文件加密方式 授权文件格式 key_type 授权类型 errorCode 授权状态 hid 硬件编码 授权许可 1、替换公钥 2、dll劫持hook 测试验证 成品 Eltima 端口虚拟化软件 USB Network Gate 通过局域网和互联网共享和接入USB端口Serial to Eth…

80/20法则-扫盲和复习篇

80/20法则-扫盲和复习篇 一、80/20法则二、对于目标三、时间管理应用四、“二八定律”基本内容总结 一、80/20法则 “80/20法则”是20世纪初意大利统计学家、经济学家维尔弗雷多帕累托提出的&#xff0c;他指出&#xff1a;在任何特定群体中&#xff0c;重要的因子通常只占少数…

Vue脚手架及组件开发

组件插槽: 路由数据传递&#xff1a;

静态网页设计——科学家网(HTML+CSS+JavaScript)(dw、sublime Text、webstorm、HBuilder X)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 感谢大佬的视频&#xff1a;https://www.bilibili.com/video/BV1wg4y1Q7qm/?vd_source5f425e0074a7f92921f53ab87712357b 源码&#xff1a;https://space.bilibili.com…

在群晖NAS上搭建私有部署笔记软件——Blossom

一、Blossom 简介 Blossom 是一个需要私有部署的笔记软件&#xff0c;虽然本身定位是一个云端软件&#xff0c;但你仍然可以在本地部署&#xff0c;数据和图片都将保存在本地&#xff0c;不依赖任何的图床或者对象存储。 Blossom | Blossom (wangyunf.com)https://www.wangyun…

01第一个Mybatis程序+引入Junit+引入日志文件logback

Mybatis MyBatis本质上就是对JDBC的封装&#xff0c;通过MyBatis完成CRUD。而对于JDBC&#xff0c;SQL语句写死在Java程序中&#xff0c;不灵活。改SQL的话就要改Java代码。违背开闭原则OCP。对于事务机制&#xff0c;MyBatis支持 或managed模式&#xff0c;JDBC模式中MyBatis…

基于SSM图书管理系统【源码】【最详细运行文档】

SSM图书管理系统【源码】【最详细运行文档】 系统简介系统涉及系统运行系统演示源码获取 系统简介 以往的图书馆管理事务处理主要使用的是传统的人工管理方式&#xff0c;这种管理方式存在着管理效率低、操作流程繁琐、保密性差等缺点&#xff0c;长期的人工管理模式会产生大量…

python 写自动点击爬取数据

今天来点不一样的&#xff01;哥们 提示&#xff1a; 这里只是用于自己学习的 &#xff0c;请勿用违法地方 效果图 会进行点击下一页 进行抓取 需要其他操作也可以自己写 文章目录 今天来点不一样的&#xff01;哥们前言一、上代码&#xff1f;总结 前言 爬虫是指通过编程自动…

Spark基础原理

Spark On Yarn Spark On Yarn的本质 Spark专注于分布式计算,Yarn专注于资源管理,Spark将资源管理的工作交给了Yarn来负责 Spark On Yarn两种部署方式 Spark中有两种部署方式&#xff0c;Client和Cluster方式&#xff0c;默认是Client方式。这两种方式的本质区别&#xff0c…