02Docker中的镜像和容器命令

镜像和容器

Docker中有镜像和容器的概念

  • 镜像(Image): Docker将应用程序及其运行所需要的依赖、函数库、环境、配置等文件打包在一起称为镜像即硬盘中的文件
  • 容器(Container): 镜像中的应用程序运行起来并加载到内存中后形成的进程就是容器,一个镜像可以运行多个容器将来形成集群,容器之间数据相互隔离

在这里插入图片描述

通过命令可以实现开机自启: 默认情况下每次重启虚拟机我们都需要手动启动DockerDocker中的容器

# Docker开机自启
systemctl enable docker

# Docker容器开机自启
docker update --restart=always [容器名/容器id]

在这里插入图片描述

镜像命令

镜像名称完整格式[repository(镜像名)]:[tag(镜像版本)]: 如mysql:5.7代表5.7版本的MySQL镜像,如果镜像没有指定版本默认是latest(最新版)

  • 一个镜像可以运行多个容器将来形成集群,运行的容器之间数据相互隔离

docker xx --help命令查看命令的具体语法,以下镜像名称均表示完整格式

命令名称描述
docker pull 镜像名称远程拉取镜像到本地
docker images查看本地拉取到的所有镜像
docker save -o 导出的镜像文件的路径 镜像名称将本地的某个镜像导出为一个压缩包
docker load -i 待加载加载镜像文件的路径加载指定路径的镜像文件到本地
docker rmi 镜像名称/镜像Id通过镜像名称或镜像ID删除本地文件的某个镜像

在这里插入图片描述

拉取/查看镜像

需求: 在DockerHub镜像仓库中查看Nginx镜像的名称和版本并拉取

在这里插入图片描述

docker pull nginx: 拉取最新的Nginx镜像

[root@localhost ~] docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
025c56f98b67: Pull complete 
ec0f5d052824: Pull complete 
cc9fb8360807: Pull complete 
defc9ba04d7c: Pull complete 
885556963dad: Pull complete 
f12443e5c9f7: Pull complete 
Digest: sha256:75263be7e5846fc69cb6c42553ff9c93d653d769b94917dbda71d42d3f3c00d3
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

docker images: 查看拉取到的镜像

在这里插入图片描述

[root@localhost ~] docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    3964ce7b8458   4 days ago   142MB

导出/加载镜像

docker save/load --help命令查看docker savedocker load的语法

需求: 将Nginx镜像保存为一个压缩包

  • docker save -o [将镜像保存到哪个目标文件(绝对路径或相对路径),目标文件不存在则会自动创建] [本地镜像名称(包括版本)]
# 将镜像导出为一个压缩包
[root@localhost ~]docker save --help
Usage:  docker save [OPTIONS] IMAGE [IMAGE...]
Save one or more images to a tar archive (streamed to STDOUT by default)
Options:
  -o, --output string   Write to a file, instead of STDOUT

# 将指定的镜像打包成一个压缩包
docker save -o nginx.tar nginx:latest

需求: 加载导出的nginx.tar压缩包得到nginx镜像

  • docker load -i [镜像压缩文件名(绝对路径或相对路径)]
# 加载文件为一个镜像
[root@localhost ~]docker load --help
Usage:  docker load [OPTIONS]
Load an image from a tar archive or STDIN
Options:
  -i, --input string   Read from tar archive file, instead of STDIN
  -q, --quiet          Suppress the load output
  
# 通过镜像名称/镜像Id删除本地nginx镜像(rmi是remove image的缩写)
docker rmi nginx:latest 
# 运行命令加载文件得到镜像
docker load -i nginx.tar  

容器命令

容器状态及其常见命令

镜像中的应用程序运行起来并加载到内存中后形成的进程就是容器,容器有运行,暂停,停止三个状态

  • 运行: 进程正常运行
  • 暂停: 进程暂停表示CPU不再执行进程,此时操作系统会将容器关联的内存暂存起来,使用unpause命令可以恢复内存空间即让CPU继续执行程序
  • 停止: 进程终止表示直接将进程杀死,此时会回收容器占用的内存和CPU等资源,但还会保留容器的文件系统即镜像
  • 删除: 彻底删除一个容器包括文件系统,-f表示强制删除运行中的容器

创建容器和启动容器的区别: 容器可以创建多个,对于停止的容器只需要再次启动不需要再次创建新的容器

在这里插入图片描述

命令功能
docker run -d --name 容器名称 -p 端口映射 镜像名称根据本地某个镜像创建并运行一个容器
docker pause 容器ID或容器名让一个运行的容器暂停
docker unpause 容器ID或容器名让一个容器从暂停状态恢复运行
docker stop 容器ID或容器名停止一个运行的容器
docker start 容器ID或容器名让一个停止的容器再次运行
docker rm -f 容器ID或容器名彻底删除一个容器,将文件系统也删除,-f 表示删除运行中的容器
docker ps -a默认只会查看所有运行的容器及状态,-a表示all即查看所有运行的和停止的容器及状态
docker exec 容器ID或容器名进入容器执行命令
docker logs [-f] 容器名称查看容器运行日志,-f参数表示在控制台持续输出日志
docker inspect 容器名称查看容器的详情信息如Mounts(挂载信息),端口信息,镜像信息

查看所有运行的容器及状态,格式化输出指定查询的结果字段

docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"

在这里插入图片描述

命令别名

命令的别名机制,简化命令的输入

# 第一步: 修改/root/.bashrc文件(:wq保存),root可以用~表示
vi /root/.bashrc

# 文件内容
# .bashrc

# User specific aliases and functions
# 命令别名='原始命令'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
alias dis='docker images'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# 第二步: 执行":wq"保存修改的文件内容

# 第三步: 执行命令使别名生效
source /~/.bashr

创建并运行Nginx容器

docker run -d --name nginx -p 80:80 nginx: 根据nginx镜像文件创建一个nginx容器并运行,一个镜像文件可以创建多个容器

  • docker run: 创建并运行一个容器

  • --name: 指定创建的容器名字要求唯一,如nginx

  • -p: 指定端口映射宿主机端口号(不能冲突):容器端口号(容器之间相互隔离所以端口可以相同), 因为容器是对外隔离的我们不能直接访问,需要通过访问宿主机端口转发到对应容器端口

    • 容器内端口: 由容器内的进程决定,例如MySQL进程默认端口是3306,Nginx进程默认端口是80
    • 宿主机端口: 可以任意指定,一般与容器内保持一致
  • -d:后台运行容器,防止命令霸行现象

  • nginx:创建容器时依据的镜像名称,Docker会根据这个名字先从本地搜索镜像,如果搜索不到会从DockerRegistry中下载镜像

# 第1步去DockerHub搜索nginx镜像仓库及相关信息

# 第2步拉取Nginx镜像
docker pull nginx

# 第3步查看镜像
docker images
# 结果如下:
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    605c77e624dd   16 months ago   141MB

# 第4步创建一个Nginx容器并运行
docker run -d --name nginx -p 80:80 nginx

# 第5步查看所有运行中容器
docker ps

# 第6步访问nginx网页地址http://虚拟机地址

# 第7步停止容器
docker stop nginx

# 第8步查看所有运行中的容器
docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"

# 第9步再次启动nginx容器
docker start nginx

# 第10步再次查看所有运行中的容器
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"

# 第11步查看容器详细信息
docker inspect nginx

# 第12步进入容器查看容器内目录
docker exec -it nginx bash

# 第13步删除容器
docker rm nginx
# 容器运行中时需要强制删除
docker rm -f ngin

在Nginx容器内部修改文件

docker exec -it nginx bash: 进入Nginx容器内部

  • docker exec: 进入容器内部,容器内部会模拟一份阉割版的Linux文件系统,只包含镜像运行时所需的环境和配置以及文件
  • -it: 给当前进入的容器创建一个标准输入/输出终端方便我们与容器交互
  • nginx: 指定要进入的容器名称
  • bash: 指定进入容器后自动执行的命令,bash表示使用Linux终端交互命令如cd命令,执行exit命令从当前容器中退出
[root@localhost ~] docker exec --help
Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Run a command in a running container
Options:
  -d, --detach               Detached mode: run command in the background
      --detach-keys string   Override the key sequence for detaching a container
  -e, --env list             Set environment variables
      --env-file list        Read in a file of environment variables
  -i, --interactive          Keep STDIN open even if not attached
      --privileged           Give extended privileges to the command
  -t, --tty                  Allocate a pseudo-TTY
  -u, --user string          Username or UID (format: <name|uid>[:<group|gid>])
  -w, --workdir string       Working directory inside the container

需求: 进入Nginx容器内部,在DockerHub中的Nginx镜像页面中查找镜像的根目录,并在/usr/share/nginx/html/index.html文件中添加内容
在这里插入图片描述

Nginx容器内只具备镜像所必须的系统函数库没有vi命令,此时需要使用sed命令替换index.html文件的内容

# 进入nginx程序的根目录
root@310016c9b413:/ cd /usr/share/nginx/html
# 查看nginx根目录下的文件
root@310016c9b413:/usr/share/nginx/html# ls
50x.html  index.html
# 替换index.html文件内容,'s#原始内容#替换内容#g'
sed -i 's#Welcome to nginx#Welcome To My Blog#g' index.html
# 设置index.html文件的编码格式
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html

在这里插入图片描述

应用扩展

创建并进入Redis容器

需求: 创建并运行一个Redis容器,并且支持数据持久化

第一步: 在DockerHub拉取Redis镜像,查看Redis镜像文档中的帮助信息,利用docker run命令运行镜像得到一个Redis容器

# --appendonly yes 表示支持数据持久化
docker run -d --name myRedis -p 6379:6379 redis redis-server --appendonly yes

第二步: 进入Redis容器,并执行redis-cli客户端命令存入num=666

# 进入redis容器
docker exec -it myRedis bash
# 执行redis-cli客户端命令
redis-cli
# 存入num=666
set num 666

# 进入容器执行redis-cli命令
docker exec -it myRedis redis-cli

在这里插入图片描述

创建并进入MySQL容器

-e KEY=VALUE: 配置容器内进程运行时的一些参数,KEY和VALUE都由容器内进程决定

  • TZ=Asia/Shanghai表示设置时区;MYSQL_ROOT_PASSWORD=123表示设置MySQL默认密码
# 根据镜像创建一个MySQL容器
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql
  
# 先进入MySQL容器,后访问MySQL客户端
docker exec -it mysql bash
mysql -uroot -p

# 直接访问MySQL客户端
docker exec -it mysql mysql -uroot -p  

在容器内部使用命令直接访问MySQL客户端

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计hadoop++hive微博舆情预测 微博舆情分析 微博推荐系统 微博预警系统 微博数据分析可视化大屏 微博情感分析 微博爬虫 知识图谱

摘 要 随着社交媒体的普及和互联网技术的快速发展&#xff0c;热点舆情事件频发&#xff0c;对于政府、企业和公众来说&#xff0c;及时了解和分析热点舆情&#xff0c;把握舆论走向&#xff0c;已经成为一项重要的任务。然而&#xff0c;传统的数据处理和分析方法在面对海量…

华为 2024 届实习校园招聘-硬件通⽤/单板开发——第五套

华为 2024 届实习校园招聘-硬件通⽤/单板开发——第五套 部分题目分享&#xff0c;完整版带答案(有答案和解析&#xff0c;答案非官方&#xff0c;未仔细校正&#xff0c;仅供参考&#xff09;&#xff08;共十套&#xff0c;每套四十题选择题&#xff09;获取&#xff08;WX:…

Java18新版本特性!

Java 18引入了多项新特性&#xff0c;主要包括默认UTF-8字符集、简单的Web服务器、栈步进API等。Java 18是Oracle在2022年发布的版本&#xff0c;其旨在通过一系列创新特性来提升开发效率与性能。下面将逐一探讨Java 18的主要新特性以及它们对开发者的具体影响&#xff1a; 默认…

【C语言】10.C语言指针(4)

文章目录 1.回调函数是什么&#xff1f;2.qsort 使⽤举例2.1 使⽤qsort函数排序整型数据2.2 使⽤qsort排序结构数据 3.qsort函数的模拟实现 1.回调函数是什么&#xff1f; 回调函数就是一个通过函数指针调用的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数…

Prime1 - 信息收集和分析能力的试炼

主机发现 nmap扫描与分析 端口22、80 详细扫描&#xff1b;linux、ubuntu、 udp扫描 端口都是关闭的 脚本扫描 web渗透 打开只有一张图片&#xff1b;源码有图片和一个alt&#xff1a;hnp security不知道有啥用&#xff0c;先记录下来吧 继续web渗透思路走吧&#xff0c;目录…

线性代数|机器学习-P3乘法和因式分解矩阵

文章目录 1. 矩阵分解2. S Q Λ Q T SQ\Lambda Q^T SQΛQT3. A U Σ V T AU\Sigma V^T AUΣVT4. A LU 分解5. 矩阵的四个子空间 1. 矩阵分解 目前我们有很多重要的矩阵分解&#xff0c;每个分解对应于多个前提条件&#xff0c;分解方法&#xff0c;分解后的形状会中如下&…

如何跨渠道分析销售数据 - 6年制造业销售经验小结

如何跨渠道分析销售数据 - 6年制造业销售经验小结&#xff08;1&#xff09; 【前言】 在我过去6年销售工作生涯中&#xff0c;从第一年成为公司销冠后&#xff0c;我当时的确自满的一段时间&#xff0c;认为自己很了不起。但是第一年的销售业绩并没有拿到提成&#xff0c;最…

“一键”掌控数据库特权,DpEasy 新版本即将启航

去年11月&#xff0c;我们在 BinTools 社区推出了一款新产品——DpEasy。在我们最初设计这款产品的时候&#xff0c;我们给出的定位是「数据库安全风险扫描工具」&#xff0c;目标是提供一种简单、安全且高效的方式来管理数据库账号密码以及分析数据库账号的使用情况&#xff0…

Python开发与应用实验1 | 开发环境安装配置

*本文来自博主对专业课 Python开发与应用 实验部分的整理与解析。 *一些题目可能会增加了拓展部分&#xff08;⭐&#xff09;。拓展部分不是实验报告中原有的内容&#xff0c;而是博主本人的补充&#xff0c;以便各位学习参考。 *实验环境为&#xff1a;Python 3.10 &#xf…

[AFCTF 2018]JPython

小祥为了保护自己的代码&#xff0c;修改了部分Python Bytecode指令集&#xff0c;并把这个指令集称之为JPython&#xff0c; JPython只能在他私人定制的环境上才能运行&#xff0c;其他人无法得到这个环境。 现在&#xff0c;小明为了获取小祥代码中的秘密&#xff0c;收集到了…

LangChain实战技巧之四:当模型(Model)不支持Tool/Function的解决办法

文心大模型两大主力模型已全面免费&#xff0c;可参考我之前发的文章 AI菜鸟向前飞 — 今日三则AI相关新闻 但是&#xff0c;这些模型原生并不支持Tool/Function Call 如下所示&#xff1a; tool def greeting(name: str):向朋友致欢迎语return f"你好啊, {name}"…

xilinx ip自带XDC只读

检查生成的IP核再目录下显示的文件类型是不是.xcix 如果是的话&#xff0c;重新生成为.xci 再二次编辑即可 或者 将框柱的部分不选择&#xff0c;从新生成

在潮流时尚的绿地新都会,竟然藏了一家神奇的工作室

绿地新都会新开的国学文化工作室有点不一样&#xff01;拜师终南山汇通中西方文化融合东西方数术更适合中国宝宝体质的新天地 探索人生规律&#xff0c;改善家居环境&#xff0c;强化自身能量 查看人生剧本&#xff0c;观看图卡心理学TAROT 关于创始人妙霏老师 生活环境研究…

AWS 高防和阿里云高防深度对比

随着网络攻击的不断增加&#xff0c;企业对于网络安全的需求也越来越高。在这种情况下&#xff0c;高防护服务成为了企业网络安全的重要组成部分。AWS和阿里云作为全球领先的云计算服务提供商&#xff0c;都提供了高防护服务&#xff0c;但它们之间存在着一些差异。我们九河云一…

WebGL开发三维家装设计

使用WebGL开发三维家装设计软件是一项复杂而有趣的任务&#xff0c;涉及3D建模、渲染、用户交互等多个方面。以下是详细的开发步骤和技术要点。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1. 需求分析 目标用户 家装设计师家装公…

二人订单共享结束制:终身受益的新模式

在当今快速发展的互联网时代&#xff0c;一个创新的商业模式总能引起广泛关注。其中&#xff0c;“二人订单共享结束制”以其独特的魅力&#xff0c;吸引了众多消费者和创业者的目光。这一模式不仅为消费者带来了实惠&#xff0c;更为创业者提供了一个全新的平台。 只需购买一…

机关——用钥匙开对应的门

代码展示 玩家背包代码&#xff08;挂载到玩家身上&#xff09; using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 玩家背包脚本&#xff0c;用来记录玩家道具 /// </summary> public class MyBag : MonoBeha…

2.8万字总结:金融核心系统数据库升级路径与场景实践

OceanBase CEO 杨冰 谈及数字化转型&#xff0c;如果说过去还只是头部金融机构带动效应下的“选择题”。那么现在&#xff0c;我相信数字化转型已经成为不论大、中、小型金融机构的“必答题”。 本文为OceanBase最新发布的《万字总结&#xff1a;金融核心系统数据库升级路径…

nssctf刷题总结

首先就是关于"\x00"截断问题&#xff0c;\x00被当做字符串的截止字符&#xff0c;这就很有趣了我们可以把\x00放在我们要发送数据的前面&#xff0c;经过\x00截断&#xff0c;后面的数据就不用读入了。。。。。。嘿嘿&#xff0c;好像听起来没什么用&#xff0c;确实…

CentOS7某天的samba服务搭建操作记录(还没成功)

#CentOS7 yum软件仓库阿里云 samba服务器配置失败 sensors成功了 (花了200元组装H61测试机&#xff0c;75元的主板只有一块能用&#xff0c;垃圾板但又不完全能用&#xff09; 2024.5月的某天记录如下&#xff1a; https://blog.csdn.net/dszgf5717/article/details/53732182 …