【Docker】有用的命令

这篇具有很好参考价值的文章主要介绍了【Docker】有用的命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker

  1. docker镜像(Image)
    docker镜像类似于虚拟机镜像,可以将其理解为一个只读模板。除了提供容器运行时所需的程序、库、资源、配置等文件外,docker镜像还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
    镜像是创建docker容器的基础,它可以通过版本管理和增量的文件系统,如Docker Hub。

  2. docker容器(container)
    docker容器(container)类似于轻量级的沙箱,docker利用容器来运行和隔离应用。
    容器是从镜像创建的应用运行实例, 可以将其启动、开始、停止、删除,但是所有的容器是相互隔离的,互不可见的,这就提供了一个实体机可以安装多个容器,且很轻量级相对于虚拟机。镜像本身是只读的,容器从镜像启动的时候,docker会在镜像的最上层创建一个可写层,镜像本身保持不变。

  3. docker仓库(repository)
    docker仓库(repository)类似于代码库,是docker集中存放镜像的场所。 实际上,注册服务器是存放仓库的地方,其上往往存放着很多仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。
    根据存储的镜像公开分享与否,docker仓库可以分为公开仓库(Public)和私有仓库(Private)两种形式。目前,最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载,国内的公开镜像包括Docker Pool,可以提供稳定的国内访问,与GitHub类似。

  4. Dockerfile
    Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明

Docker 镜像与容器的差异

Docker 容器和镜像是 Docker 技术中两个不同的概念,它们代表了不同的层次和功能。

  1. Docker 镜像:

    • Docker 镜像是 Docker 容器的基础。它是一个包含了应用程序运行所需的一切的只读模板。镜像可以包含操作系统、运行时环境、应用程序代码、依赖关系和配置等。镜像是通过 Docker 镜像构建命令(比如 docker build)或者从 Docker Hub 等镜像仓库中下载的。
    • 镜像的特点是不可更改和只读的,它可以被用来创建多个可运行的 Docker 容器。镜像是多层存储结构,每个层都可以复用和共享,这使得镜像可以高效地分发和部署。
  2. Docker 容器:

    • Docker 容器是由 Docker 镜像创建的可运行实例。容器是在镜像层之上(镜像是只读的),添加一个可写的容器层。容器可以被启动、停止、删除和重新启动。每个容器都是相互隔离的,具有自己的文件系统、网络和进程空间。容器可以在不同的主机和不同的 Docker 引擎中运行,具有高度的可移植性和可复制性。
    • 容器通常用来运行单个应用程序或者服务,每个容器都有自己的运行环境和运行时配置。

总结来说,Docker 镜像是一个只读的模板,用于创建 Docker 容器。镜像具有不变性和可重用性的特点。而容器是由镜像创建的可运行实例,具有自己的文件系统和运行环境,通常用于运行应用程序或者服务。在 Docker 中,镜像与容器之间是父子关系,镜像是容器的基础。

Docker的好处

  1. 更便捷的应用交付和部署
    【Docker】有用的命令,Linux,docker

  2. 更便捷的升级和扩缩容
    【Docker】有用的命令,Linux,docker

  3. 更简单的系统运维
    【Docker】有用的命令,Linux,docker

  4. 更高效的计算资源利用
    【Docker】有用的命令,Linux,docker

Hypervisor

Hypervisor(虚拟机监视器)是一种软件、硬件或者组合形式,用于虚拟化计算机资源,并管理多个虚拟机的创建、运行和监控。

Hypervisor可以分为两种类型:

  1. Type 1 Hypervisor(裸金属/直接运行型):直接运行在物理硬件上,也称为裸金属或裸机型Hypervisor。它具有更高的性能和直接的硬件访问能力。Type 1 Hypervisor负责管理裸机资源,将其划分为多个虚拟机,每个虚拟机可以运行自己的操作系统。常见的Type 1 Hypervisor有VMware ESXi和Microsoft Hyper-V。

  2. Type 2 Hypervisor(主机操作系统运行型):运行在主机操作系统之上,也称为主机型Hypervisor。Type 2 Hypervisor在主机操作系统上创建和管理虚拟机,并提供对虚拟机的资源分配和监控。它通常用于开发和测试环境。常见的Type 2 Hypervisor有VMware Workstation和Oracle VirtualBox。

Hypervisor的主要功能包括:

  • 资源虚拟化:将物理计算机的CPU、内存、存储等资源划分成多个虚拟机,并为每个虚拟机提供一定的资源配额。
  • 虚拟机管理:创建、启动、停止和删除虚拟机,提供虚拟机的管理接口和操作。
  • 资源调度:根据虚拟机的需求和主机资源的可用性,动态调整资源分配,以实现更好的性能和利用率。
  • 安全隔离:对不同虚拟机之间提供隔离性,确保一台虚拟机的故障或安全问题不影响其他虚拟机。
  • 监控和报告:监控虚拟机的性能指标、资源利用率和运行状态,并生成报告或提供警报。

Hypervisor的作用是实现虚拟化技术,使得一台物理计算机能同时运行多个虚拟机,并将它们隔离开来,从而提供更高的资源利用率、灵活性和可靠性。它是构建虚拟化环境和云计算基础设施的关键组件之一。

运维

运维,全称为运营和维护(Operations and Maintenance),是指对计算机系统、网络设施以及软件应用进行有效运行和稳定维护的工作。

在信息技术领域中,运维是一项重要的工作,它涵盖了硬件设备、网络设施、操作系统、数据库、服务器等各个方面。运维人员负责监控系统运行状态、处理系统故障、进行性能优化、部署更新和维护安全等工作。Docker是运维人员部署项目的高效工具。

一、安装docker

查看centos版本信息,centos7以上已内置docker安装比较方便,参考

cat /etc/redhat-release

centos 7下安装docker

# 安装Docker所需的一些依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 安装最新版本的Docker
sudo yum install docker-ce docker-ce-cli containerd.io

sudo yum install -y docker这条命令中,-y是一个命令行选项,表示在安装过程中自动应答"yes"到所有的确认提示。

这个选项对于在服务器环境中使用尤其有用,因为在这种环境中,可能需要进行大量的包安装和配置,如果每次都手动确认,会非常麻烦。使用-y选项可以自动应答所有的确认提示,大大简化操作。

启用并启动Docker服务

sudo systemctl enable docker
sudo systemctl start docker

验证docker是否安装成功

docker run hello-world
# 或者
sudo docker --version

二、启动docker

启动Docker服务,并设置为开机启动

systemctl start docker.service
systemctl enable docker.service

如果启动docker失败,可以先卸载再重装

查看docker的版本

docker version

【Docker】有用的命令,Linux,docker

修改镜像网址

创建daemon文件

vi /etc/docker/daemon.json

输入一下内容

{		"registry-mirrors":["https://registry.docker-cn.com"],
		"live_restrore":true}

然后esc键返回,并输入:wq保存退出文件

重启docker,并验证镜像是否安装成功

systemctl restart docker
docker search redis

三、获取docker镜像

(注:该图来自该博客:(https://blog.csdn.net/qq_39311377/article/details/131730887))

【Docker】有用的命令,Linux,docker

将image文件从仓库下载到本地, pull获取镜像,library对应的文件组

docker pull library/hello-world

获取目标image_name镜像

docker pull image_name

下载centos7镜像,:7指定了对应的centos版本:

docker pull centos:7

下载python3.9镜像

docker pull python:3.9

查看已有镜像,Docker镜像保存在/var/lib/docker目录下

docker images

运行hello-world镜像

docker run hello-world

修改本地镜像名字(小写)

docker tag centos:7 mycentos:1

删除仓库为 docker.o/tomcat, 标签为7.0.77-jre7的镜像

docker rmi docker.io/tomcat:7.0.77-jre7

删除镜像ID为b39c68b7af30的镜像

docker rmi b39c68b7af30

本地镜像的删除

docker rmi centos:7

查看正在运行的容器

docker ps

查看所有容器,无论是否正在运行

docker ps -a

【Docker】有用的命令,Linux,docker

CONTAINER ID:容器的唯一表示ID。
IMAGE:创建容器时使用的镜像。
COMMAND:容器最后运行的命令。
CREATED:创建容器的时间。
STATUS:容器状态。
PORTS:对外开放的端口。
NAMES:容器名。可以和容器ID一样唯一标识容器,同一台宿主机上不允许有同名容器存在,否则会冲突。

根据已有的镜像创建容器

docker run -it --name=c2 centos:7

启动python3.9

docker run -it --name=python3.9 python:3.9

参数的解释:
-i表示让容器的标准输入保持打开
-t表示为容器重新分配一个伪输入终端
--name表示为创建出来的容器起一个名称,名称为c2
centos 表示根据镜像的名称
注意:这种方式表示前台运行容器,退出终端之后,容器会关闭,退出之前可以在xshell中打开另个一终端来查看目前正在运行的容器
退出终端之后,可以再次查看,看看容器是否关闭
如果需要在后台启动容器,可以加上参数-d
命令如下:

docker run -d --name=c3 centos:7

但是只加-d 不加-it会导致启动成功之后,容器就直接关闭,所以后台启动的时候通常都是使用-itd的方式运行容器

docker run -itd --name=c3 centos:7

例子

docker run -p localhost:3307:3306 --name scrapersql --privileged=true \
  -v /database/mysql:/var/lib/mysql \
  -e "MYSQL_ALLOW_EMPTY_PASSWORD=true" \
  -d mysql:5.7

说明
localhost的3307端口上创建一个MySQL服务,并将其映射到主机的3306端口
--name 设置镜像名字
-v将主机上的 /database/mysql目录挂载到容器内的 /var/lib/mysql目录
退出容器
-e:该选项用于设置环境变量。-e "MYSQL_ALLOW_EMPTY_PASSWORD=true"表示在容器中设置一个环境变量MYSQL_ALLOW_EMPTY_PASSWORD,并将其值设置为true。这个环境变量的作用是允许空的MySQL密码

exit

设置端口号

docker run -itd -p 8081:8080 tomcat

8081指的是宿主机的端口
8080指的是容器里面tocmat的端口号
-p 表示端口号参数
从客户机上访问容器,需要有端口映射,docker容器默认采用桥接模式与宿主机通信,需要将宿主机的ip端口映射到容器的ip端口上;
桥接模式,也就是将虚拟机的虚拟网络适配器与主机的物理网络适配器进行交接,虚拟机中的虚拟网络适配器可通过主机中的物理网络适配器直接访问到外部网络。简而言之,这就好像在局域网中添加了一台新的、独立的计算机一样。因此,虚拟机也会占用局域网中的一个 IP 地址,并且可以和其他终端进行相互访问。

查看容器的详细信息

docker inspect container_id/container_name

查看容器的日志信息

docker logs container_id/container_name

如果提示FileNotFoundException 则有可能是 容器目录下的conf文件夹没有权限 可以使用 chmod -R递归设置权限

从宿主机复制到容器:docker cp 宿主机本地路径 容器名字/ID:容器路径

docker cp /root/123.txt mycentos:/home/
# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql

docker run -id \
-p 3366:3306 \
--name=c_mysql \
-v /opt/mysql/conf:/etc/mysql/conf.d \
-v /opt/mysql/logs:/logs \
-v /opt/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7

参数说明:

-p 3366:3306**:将容器的 3306 端口映射到宿主机的 3307 端口。
-v etc/conf:/etc/mysql/conf.d**:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
-v etc/logs:/logs**:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
-v etc/data:/var/lib/mysql** :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
-e MYSQL_ROOT_PASSWORD=root:**初始化 root 用户的密码。

启动容器

docker start  container_name/container_id

停止容器

docker stop container_name/container_id

重启容器

docker restart container_name/container_id

启动容器后,进入到容器内部

docker attach container_name/containere_id

删除容器

docker rm container_name/container_id

查看当前系统docker信息

docker info

获取最新的centos镜像

docker pull centos:latest

查看镜像信息

sudo docker images

查看docker信息

docker info
docker exec -it xxxxx bash

docker exec -it xxxxx bash,这是用于在运行的 Docker 容器中打开一个交互式终端(bash shell)的命令。

  • docker exec:这是 Docker 命令行工具中用于在运行的容器中执行命令的命令。
  • -it:这是两个选项的结合,-i 代表 interactive(交互式),-t 代表 tty(终端)。这两个选项一起使用,允许你在容器中运行一个交互式命令行会话。
  • xxxx:这是你要在其内部运行命令的 Docker 容器的 ID 或名称。你需要用你实际的容器 ID 或名称替换 xxxx
  • bash:这是你要在容器中运行的命令。在这个例子中,我们正在请求 Docker 在容器中启动一个 bash shell。因此,整个命令的意思是:“在运行的容器 xxxx 中启动一个交互式的 bash shell。”
mysql
create database `scraping` default character set utf8mb4;
create database `projectdb` default character set utf8mb4;
create database `taskdb` default character set utf8mb4;
create database `resultdb` default character set utf8mb4;
quit

通过上述命令进入mysql

docker build -t scraper:latest . # 注意后面的点. 

命令 docker build -t scraper:latest .用于在Docker环境中构建一个新的镜像,并将其标记为 scraper:latest。如果你要运行的程序在Dockerfile中已经定义好了,那么这条命令会从Dockerfile开始构建,然后创建一个包含你程序的新镜像。

如果在运行这个命令时遇到了问题,以下是一些可能的原因:

  1. Dockerfile不存在或者不在当前目录。你需要确保你在包含Dockerfile的目录下运行这个命令,或者使用 -f 参数来指定Dockerfile的位置。
  2. Docker环境没有正确安装或者配置。你可以通过 docker --version 来检查Docker是否正确安装并运行。
  3. 网络问题。在某些情况下,网络问题可能会阻止Docker从Internet下载需要的文件。如果可能的话,尝试更换网络环境或者使用VPN。
  4. Dockerfile有错误或者不完整。你需要检查你的Dockerfile以确保其正确性。

四、创建镜像

使用命令行创建镜像

docker commit 命令用于根据 Docker容器 的更改创建一个新的 Dokcer镜像。该命令后面的 CONTAINER 可以是容器Id,或者是容器名。

docker commit 容器id 镜像名称:版本号

docker save 用来将一个或多个image打包保存。如:将本地镜像库中的image1和image2打包到images.tar中

docker save -o 压缩文件名称 镜像名称:版本号
docker save -o images.tag image1:v1 image2:v1

docker load用于将打包的tar中包含的镜像load到本地镜像库,但不能重命名其中的镜像名。

docker load –i 压缩文件名称
docker load -i images.tar

使用dockerfile创建镜像

dockerfile

FROM centos:7 							#定义父镜像
MAINTAINER  yjf 						#定义作者信息
RUN yum install -y vim					# 执行安装vim命令
WORKDIR /opt 							# 定义默认的工作目录
CMD /bin/bash							# 定义容器启动执行的命令

通过dockerfile构建镜像

docker build -f  my_dockerfile -t xxx:7

五、docker报错

ERROR【docker】报错:Got permission denied while trying to connect to the Docker daemon socket at unix:///var/
需要使用root权限

ERROR docker pull mysql 报missing signature key错误
如果安装docker用的是yum install docker命令的话,下载下来的docker版本未旧版本,所有数字签名有问题
https://blog.csdn.net/Single_for_life/article/details/133653113

su root

https://www.php.cn/faq/506200.html
https://www.modb.pro/db/586199
https://www.bilibili.com/read/cv22443043/

https://blog.csdn.net/m0_73409141/article/details/131425285
https://worktile.com/kb/ask/30572.html
https://blog.csdn.net/swadian2008/article/details/109518783
https://blog.csdn.net/qq_47614329/article/details/130387532
https://blog.csdn.net/weixin_41384860/article/details/128819642
https://blog.51cto.com/u_16099211/6314870文章来源地址https://www.toymoban.com/news/detail-832555.html

到了这里,关于【Docker】有用的命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux命令200例:nc非常有用的网络工具(常用)

    🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Linux命令大全。 🏆本专栏我们会通过 具体的系统的命令讲解 加上

    2024年02月12日
    浏览(39)
  • 【Docker】Linux中Docker技术入门与实战及实用的常规命令

    目录 一、引言 1. 说明: 2. Linux介绍 3. Docker简介 二、Docker三要素 1. 镜像(Image) 2. 容器(Container) 3. 仓库(Repository) 三、实现案例 1. 创建 2. 设置镜像 3. 开启设置 4. Docker安装 5. Docker使用及命令 每篇一获 Linux 是开源的,因此是免费的。 Web 主机仅需要支付技术支持即可安

    2024年02月01日
    浏览(42)
  • Linux - Docker 安装使用 常用命令 教程

    官方文档地址: Get Started | Docker 中文参考手册: https://docker_practice.gitee.io/zh-cn/ 1.1 官方定义 最新官网首页 # 1.官方介绍 - We have a complete container solution for you - no matter who you are and where you are on your containerization journey. - 翻译: 我们为你提供了一个完整的容器解决方案,不管你是谁,不

    2024年02月11日
    浏览(37)
  • Linux-Docker镜像-基础操作命令

    参考 https://www.cnblogs.com/lyj1023/p/16544717.html 1查看本地镜像:docker images 2查看镜像内容:tar xvf nginx.tar.gz 3 docker run [选项] [镜像名] [shell 命令] [参数] docker run centos /bin/echo \\\'hello wold\\\' 4显示正在运行的容器 docker ps docker ps -a #显示所有容器(正在运行及关闭的所有容器) 5指定端口映

    2024年02月07日
    浏览(36)
  • docker oracle linux命令执行sql

    docker安装oracle 查看日志是否安装成功 docker container ls -a命令查看容器名 sys 用户登录容器 sys 用户登录容器创建表空间以及用户 建表 (复制sql,替换表名执行完毕后,再修改自己想要的字段即可) 什么是pdb数据库?什么是CDB? 参照https://blog.csdn.net/weixin_39876739/article/details/1

    2024年02月12日
    浏览(33)
  • linux系统中解决docker: bash:未找到命令

    目录 第一步、检查你的yum是否是最新版(不是的话就更新yum)  第二步、安装依赖软件包 第三步、设置yum源  第四步、安装docker  第五步、启动docker服务 第六步、设置开机自启动 第七步、给docker配置应用镜像下载加速(国外网站,下载应用镜像慢)  以下是卸载docker 删除

    2024年02月08日
    浏览(40)
  • 【Linux命令查看docker hub pull ratelimit】

    Linux命令查看docker hub pull ratelimit 用户类型 速率限制 匿名用户 每个IP地址每6小时100次pull 身份验证的用户 每6小时200次pull Docker订阅付费用户 每天多达5000次pull   当你发出一个pull request并且超过限制时,Docker Hub会在请求manifest时返回一个带有以下主体的 429 响应代码: 此错

    2024年02月02日
    浏览(32)
  • Docker进入容器,从容器拷贝回宿主机,并在容器内执行Linux命令,Windows中进入容器操作命令

    目录 简介 1、查看容器名字 2、进入容器语法 3、操作实例: 1. COMMAND 参数: 2. 查看正在运行的容器 3. 使用 exec 进入容器 4. 推荐的配置 5. 退出docker内部 4、文件拷贝: 拷贝到容器中:将需要处理的视频文件传输到容器中 容器拷贝到宿主机中:将分割好的文件从容器拷贝回宿

    2024年02月09日
    浏览(62)
  • 如何在 Linux 命令行下玩转 Docker——如何使用 Dockerfile 来构建和运行容器镜像

    作者:禅与计算机程序设计艺术 Docker 是一款开源的容器化技术,它利用 Linux 内核的容器特性,将应用部署到独立的进程环境中。基于容器技术可以极大地提高开发者和运维人员的效率,降低部署、测试和生产环节中的成本,有效地实现云计算资源的弹性伸缩。 本文主要介绍

    2024年02月07日
    浏览(59)
  • Docker | Docker常用命令

    ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:Docker系列 ✨特色专栏: MySQL学习 🥭本文内容: Docker | Docker常用命令 📚个人知识库: [Leo知识库]https://gaoziman.gitee.io/blogs/),欢迎大家访问 大家

    2024年02月05日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包