当前位置: 首页 > news >正文

Docker——常用命令

1.Docker是做什么的?

        Docker 是一个开源的应用容器引擎,它让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。它可以帮助我们下载应用镜像,创建并运行镜像的容器,从而快速部署应用

镜像和容器

当我们利用Docker安装应用时,Docker会自动搜索并下载应用镜像(image)。镜像不仅包含应用本身,还包含应用运行所需要的环境、配置、系统函数库。Docker会在运行镜像时创建一个隔离环境,称为容器(container)。 镜像仓库:存储和管理镜像的平台,Docker官方维护了一个公共仓库。

命令解读(以MySQL部署为例)

docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \mysql

解读:

  • docker run -d :创建并运行一个容器,-d则是让容器以后台进程运行

  • --name mysql : 给容器起个名字叫mysql,你可以叫别的

  • -p 3306:3306 : 设置端口映射。

    • 容器是隔离环境,外界不可访问。但是可以宿主机端口映射容器内到端口,当访问宿主机指定端口时,就是在访问容器内的端口了。

    • 容器内端口往往是由容器内的进程决定,例如MySQL进程默认端口是3306,因此容器内端口一定是3306;而宿主机端口则可以任意指定,一般与容器内保持一致。

    • 格式: -p 宿主机端口:容器内端口,示例中就是将宿主机的3306映射到容器内的3306端口

  • -e TZ=Asia/Shanghai : 配置容器内进程运行时的一些参数

    • 格式:-e KEY=VALUE,KEY和VALUE都由容器内进程决定

    • 案例中,TZ=Asia/Shanghai是设置时区;MYSQL_ROOT_PASSWORD=123是设置MySQL默认密码

  • mysql : 设置镜像名称,Docker会根据这个名字搜索并下载镜像

    • 格式:REPOSITORY:TAG,例如mysql:8.0,其中REPOSITORY可以理解为镜像名,TAG是版本号

    • 在未指定TAG的情况下,默认是最新版本,也就是mysql:latest

        镜像的名称不是随意的,而是要到DockerRegistry中寻找,镜像运行时的配置也不是随意的,要参考镜像的帮助文档,这些在DockerHub网站或者软件的官方网站中都能找到。

        如果我们要安装其它软件,也可以到DockerRegistry中寻找对应的镜像名称和版本,阅读相关配置即可。

2.Docker常见命令

命令

说明

docker pull

拉取镜像

docker push

推送镜像到DockerRegistry

docker images

查看本地镜像

docker rmi

删除本地镜像

docker run

创建并运行容器(不能重复创建)

docker stop

停止指定容器

docker start

启动指定容器

docker restart

重新启动容器

docker rm

删除指定容器

docker ps

查看容器

docker logs

查看容器运行日志

docker exec

进入容器

docker save

保存镜像到本地压缩文件

docker load

加载本地压缩文件到镜像

docker inspect

查看容器详细信息

补充:

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

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

演示说明:(以Nginx为例)

# 第1步,去DockerHub查看nginx镜像仓库及相关信息# 第2步,拉取Nginx镜像
docker pull nginx# 第3步,查看镜像
docker images
# 结果如下:
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    605c77e624dd   16 months ago   141MB
mysql        latest    3218b38490ce   17 months ago   516MB# 第4步,创建并允许Nginx容器
docker run -d --name nginx -p 80:80 nginx# 第5步,查看运行中容器
docker ps
# 也可以加格式化方式访问,格式会更加清爽
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"# 第6步,访问网页,地址: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
# 或者,可以进入MySQL
docker exec -it mysql mysql -uroot -p# 第13步,删除容器
docker rm nginx
# 发现无法删除,因为容器运行中,强制删除容器
docker rm -f nginx

命令别名

给常用Docker命令起别名,方便我们访问:

# 修改/root/.bashrc文件
vi /root/.bashrc
内容如下:
# .bashrc# User specific aliases and functionsalias 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

然后,执行命令使别名生效

source /root/.bashrc

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • c语言第18天笔记
  • 第11章 第3节 软件测试的基本概念(软件评测师)
  • 水星Mercury X1轮式人形机器人结合openc算法&STag标记码视觉系统实现精确抓取!
  • 轻松学 c++之类与对象下篇 + 模板
  • 流程图绘作方法
  • 【数学建模备赛】Ep02:TOPSIS模型(优劣解距离法)
  • 仿Muduo库实现高并发服务器——事件监控Poller模块
  • 【日常工作与提升式学习分享】
  • 【康复学习--LeetCode每日一题】3152. 特殊数组 II
  • 比OpenAI的Whisper快50%,最新开源语音模型
  • Apache Doris 的 Incremental Read增量读取,数据合并,数据清理
  • Java重修笔记 第三十三天 StringBuffer类、StringBuild类
  • jenkins工具配置
  • 谷歌实用Gmail技巧:批量使用多个外贸邮箱技巧
  • 《计算机组成原理》(第3版)第10章 控制单元的设计 复习笔记
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • MySQL的数据类型
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • spring boot下thymeleaf全局静态变量配置
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Vue官网教程学习过程中值得记录的一些事情
  • 对超线程几个不同角度的解释
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 解析带emoji和链接的聊天系统消息
  • 使用parted解决大于2T的磁盘分区
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • Nginx实现动静分离
  • # 安徽锐锋科技IDMS系统简介
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (LeetCode) T14. Longest Common Prefix
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (二开)Flink 修改源码拓展 SQL 语法
  • (南京观海微电子)——示波器使用介绍
  • (七)c52学习之旅-中断
  • (全注解开发)学习Spring-MVC的第三天
  • (十六)串口UART
  • (四)React组件、useState、组件样式
  • **CI中自动类加载的用法总结
  • .apk 成为历史!
  • .gitignore
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET MVC第三章、三种传值方式
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET开源纪元:穿越封闭的迷雾,拥抱开放的星辰
  • .NET连接MongoDB数据库实例教程
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .sys文件乱码_python vscode输出乱码
  • @Autowired 和 @Resource 区别的补充说明与示例
  • @Autowired标签与 @Resource标签 的区别
  • @Bean有哪些属性
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [Angular] 笔记 18:Angular Router
  • [C#]C#学习笔记-CIL和动态程序集
  • [CERC2017]Cumulative Code