Docker命令学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Docker命令学习笔记

前言


在学会如何进行项目的开发以后,发现仅仅会项目的开发还算不上一个合格的Java程序员,还要学会如何将项目在服务器上进行部署。之前通过Linux的方式将项目部署到了服务器上,但是Linux方式部署的过程相较于docker来说过于繁琐,因此决定学习docker这种更为简便的方法,将学习docker的过程在此进行记录。

学习资料狂神说Java_Docker

使用软件:MobaXterm

image.png

image.png

一、Docker是什么?


Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。是完全使用沙箱机制,彼此之间没有任何接口。

来源:Docker_百度百科:https://baike.baidu.com/item/Docker/13344470?fr=aladdin

二、Docker常用命令


1. 帮助命令


dockerversion#显示docker的版本信息dockerinfo#显示docker的系统信息,包括镜像和容器数量docker命令--help#帮助命令

docker帮助文档的地址:https://docs.docker.com/engine/reference/commandline/docker/

2. 镜像命令


docker images

dockerimages#查看本机上的所有镜像

image.png

[root@VM-16-16-centos/]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEredislatest5d89766432d06weeksago105MBnginxlatestf8f4ffc8092c6weeksago133MBmysqllatest2fe4637626806weeksago514MBrabbitmqmanagement2121b269a5086weeksago253MBhello-worldlatestfeb5d9fea6a56weeksago13.3kBelasticsearch7.9.2caa7a21ca06e13monthsago763MBdaocloud.io/library/mysql8.0.13102816b1ee7d2yearsago486MB#解释REPOSITORY仓库的镜像源TAG镜像的标签,显示镜像的版本信息IMAGEID镜像IDCREATED镜像的创建时间SIZE镜像的大小#可选项Options:
-a, --all#显示所有的镜像--digestsShowdigests-f, --filterfilterFilteroutputbasedonconditionsprovided--formatstringPretty-printimagesusingaGotemplate--no-truncDon't truncate output-q, --quiet#只显示镜像的ID

docker search

docker search   # 搜索镜像

image.png

[root@VM-16-16-centos/]#dockersearchmysqlNAMEDESCRIPTIONSTARSOFFICIALAUTOMATEDmysqlMySQLisawidelyused, open-sourcerelation…11665     [OK]
mariadbMariaDBServerisahighperformingopensou…4444      [OK]
mysql/mysql-serverOptimizedMySQLServerDockerimages. Create…867                  [OK]
perconaPerconaServerisaforkoftheMySQLrelati…561       [OK]
phpmyadminphpMyAdmin-AwebinterfaceforMySQLandM…366       [OK]
#可选项,通过收藏数来进行过滤Options:
-f, --filterfilterFilteroutputbasedonconditionsprovided--formatstringPretty-printsearchusingaGotemplate--limitintMaxnumberofsearchresults (default25)
--no-truncDon't truncate output--filter=STARS=3000#搜索出来的镜像就是STARS数量大于3000的镜像

image.png

docker pull

docker pull  # 拉取镜像  =>  docker pull 镜像名[:tag]

image.png

[root@VM-16-16-centos/]#dockerpullmysqlUsingdefaulttag: latest#如果下载时不指定tar版本,默认就是latest最新版本latest: Pullingfromlibrary/mysqlb380bbd43752: Pullcomplete#分层下载,dockerimage的核心,联合文件系统f23cbf2ecc5d: Pullcomplete30cfc6c29c0a: Pullcompleteb38609286cbe: Pullcomplete8211d9e66cd6: Pullcomplete2313f9eeca4a: Pullcomplete7eb487d00da0: Pullcomplete4d7421c8152e: Pullcomplete77f3d8811a28: Pullcompletecce755338cba: Pullcomplete69b753046b9f: Pullcompleteb2e64b0ab53c: PullcompleteDigest: sha256:6d7d4524463fe6e2b893ffc2b89543c81dec7ef82fb2020a1b27606666464d87#签名信息Status: Downloadednewerimageformysql:latestdocker.io/library/mysql:latest#真实地址#等价于dockerpullmysqldockerpulldocker.io/library/mysql:latest#指定版本下载dockerpullmysql:5.7

下载指定版本的docker

image.png

docker rmi

docker rmi 镜像Id # 删除指定镜像

image.png

批量删除镜像

方法一

docker rmi -f $(docker images -aq)  # 删除所有镜像

方法二:

docker rmi -f 镜像Id1 镜像Id2 镜像Id3...   # 以空格作为分隔符

image.png

在删除过程中可能会遇到无法删除的错误,是因为此时该镜像的容器正在运行,要想删除该镜像应该先将容器关闭,执行命令docker stop 容器Id即可

3. 容器命令


有了镜像才可以创建容器

在这里跟着狂神以CentOS系统为例

docker pull centos   # 拉取最新的centos镜像

拉取最新版的centos镜像,此时相当于在服务器上跑一个centos系统

image.png

容器启动命令


docker run [可选参数] 容器名称
# 可选参数
--name="Name"   # 容器名称 例如:tomcat01 tomcat02,用来区分容器
-d              # 以后台方式运行容器
-it             # 使用交互方式运行容器,进入容器查看内容
-p              # 指定容器的端口,例如 -p 8080:8080
-P              # 随机指定容器端口
# -p常用命令
-p ip:主机端口:容器端口
-p 主机端口:容器端口 (最常用)
-p 容器端口
容器端口

image.png

[root@VM-16-16-centos /]# docker run -it centos /bin/bash    启动并进入容器
[root@d59c91417c86 /]# ls         查看容器内的内容
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@d59c91417c86 /]# exit       退出容器,从容器中退回到主机
exit
[root@VM-16-16-centos /]# ls      查看容器外的内容
bin  boot  data  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

退出容器命令


exit   # 从容器中退出到主机的命令

这个命令会直接将容器进行退出,但是在退出时会将容器关闭停止,如果想要退出时不停止容器,按下Ctrl + P + Q在容器不停止运行的情况下退出容器

image.png

查看容器命令


docker ps  # 查看当前正在运行的容器
-a      # 查看当前正在运行的容器+带出历史运行过的容器
-n=?    # 显示最近创建的容器
-q      # 只显示容器的编号

image.png

删除容器命令


docker rm 容器Id                # 删除指定容器,不能删除正在运行的容器
docker rm -f $(docker ps -aq)  # 删除所有的容器

image.png

启动容器命令


docker start 容器Id       # 启动容器
docker restart 容器Id     # 重启容器

停止容器命令


docker stop 容器Id     # 停止当前正在运行的容器
docker kill 容器Id     # 强制停止当前正在运行的容器

三、Docker常用进阶命令


1. 容器命令


后台启动容器


docker run -d 镜像名称   # 后台启动容器

问题:当在后台启动centos时,发现容器自动停止了

image.png

原因docker容器使用后台运行就必须要有一个前台进程,当docker启动后发现自己没有提供服务时就会自动停止。

查看日志命令


docker logs [可选参数] [容器Id]  # 查看指定容器的日志
# 可选项
  -f, --follow         # 只输出指定的日志
  -n, --tail string    # 输出的日志条数,使用-n或--tail命令时必须加行数
  -t, --timestamps     # 输出的日志前有时间信息

image.png

image.png

image.png

image.png

进入正在运行的容器


方法一

docker exec -it 容器Id bashShell  # 以交互模式进入当前正在运行的容器
# 测试
# 查看当前正在运行的容器
[root@VM-16-16-centos ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
8b58f0b6cfb0   centos    "/bin/bash"   20 minutes ago   Up 20 minutes             laughing_nash
# 进入到指定容器的/bin/bash目录下
[root@VM-16-16-centos ~]# docker exec -it 8b58f0b6cfb0 /bin/bash
# 成功的进入了指定目录
[root@8b58f0b6cfb0 /]#

方法二:

docker attach 容器Id
# 测试
# 查看当前正在运行的容器
[root@VM-16-16-centos ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
8b58f0b6cfb0   centos    "/bin/bash"   27 minutes ago   Up 27 minutes             laughing_nash
# 进入到指定的容器
[root@VM-16-16-centos ~]# docker attach 8b58f0b6cfb0
# 成功的进入了指定容器内部
[root@8b58f0b6cfb0 /]#

两种方法的区别:

  1. docker exec:进入容器后开启一个新的终端,可以在里面操作(常用)
  2. docker attach:进入容器正在执行的终端,不会启动新的进程

查看容器的进程命令


查看容器的进程信息时要查看的容器必须是正在运行的容器

docker cp 容器Id:容器内容路径 目的的主机路径

image.png

2. 镜像命令


查看镜像元数据


docker inspect 容器Id

image.png

总结


以上便是docker中基本的镜像命令和容器命令,在docker中还有很多的命令,要想学好docker,只有不断的使用命令才能将其理解和记忆,除此以外没有其它捷径。

当坚强成为唯一的选择,才知道自己可以有多坚强。在坚持不住的时候,记得告诉自己,再坚持一下。想一千次,不如去做一次!

image.png

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
Linux 持续交付 Go
Docker常用命令总结
这篇文章总结了Docker的基本操作,包括Docker的简介、镜像、容器和仓库的概念。介绍了如何在CentOS上安装和卸载Docker,以及常用Docker命令,如查看和删除镜像、运行和管理容器、文件拷贝和日志查看。还提供了一个curl命令示例来测试本地容器服务。完整内容请参考原文链接:[Docker命令总结](https://blog.csdn.net/javayoungcoolboy/article/details/134975314)。
|
2天前
|
运维 Linux Shell
Docker详解(七)——Docker辅助命令
Docker详解(七)——Docker辅助命令
24 4
|
2天前
|
存储 Shell Docker
docker 部署单节点的etcd以及 常用使用命令
在 Docker 中部署单节点的 etcd 以及一些常用命令的操作,可以按照以下步骤进行: ## 一、部署单节点 etcd 1. **拉取 etcd Docker 镜像**:您可以从 Docker Hub 拉取 etcd 的官方镜像。 ```shell docker pull quay.io/coreos/etcd:latest ``` 2. **启动 etcd 容器**:使用 `docker run` 命令来启动 etcd 容器。以下是一个示例命令,其中将容器的 2379 端口映射到主机的 2379 端口: ```shell docker run -d \
|
2天前
|
NoSQL Linux Shell
2.Docker常用命令(linux)
2.Docker常用命令(linux)
|
2天前
|
存储 运维 Linux
Docker详解(六)——Docker高级控制命令
Docker详解(六)——Docker高级控制命令
20 2
|
2天前
|
运维 监控 Linux
【专栏】Docker命令`docker ps`的使用,包括列出运行中的容器、筛选特定容器、组合使用与其他命令配合以及在故障排查中的应用
【4月更文挑战第28天】本文介绍了Docker命令`docker ps`的使用,包括列出运行中的容器、筛选特定容器、组合使用与其他命令配合以及在故障排查中的应用。通过基础和高级用法示例,如列出所有容器、搜索特定镜像、监控资源使用等,帮助读者理解和提升容器管理效率。对于Linux运维工程师,掌握`docker ps`是必备技能。
|
2天前
|
Ubuntu Linux Shell
Docker 镜像及其命令
Docker 镜像及其命令
57 0
|
2天前
|
存储 Ubuntu 安全
Docker容器常用命令
Docker容器常用命令
25 1
|
2天前
|
关系型数据库 MySQL Linux
[Docker] 的常用命令
[Docker] 的常用命令
|
2天前
|
监控 Docker 容器
Docker从入门到精通:Docker log 命令学习
了解 Docker 日志管理对容器监控至关重要。`docker logs` 命令用于查看和管理容器日志,例如,`docker logs <container_name>` 显示容器日志,`-f` 或 `--follow` 实时跟踪日志,`--tail` 显示指定行数,`--timestamps` 添加时间戳,`--since` 按日期筛选。Docker 支持多种日志驱动,如 `syslog`,可通过 `--log-driver` 配置。有效管理日志能提升应用程序的稳定性和可维护性。
17 0