Docker初学3:Docker的常用命令
Docker的常用命令
帮助命令
帮助命令可以在我们遇到不懂的命令时帮助我们去了解它们怎么使用。
docker version # 显示 Docker 版本信息。
docker info # 显示 Docker 系统信息,包括镜像和容器数。。
docker --help # 帮助
镜像命令
docker images
docker images
# 列出本地主机上的镜像
[root@iZh40ti53pk77iZ blog]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 4 months ago 13.3kB
# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像创建时间
SIZE 镜像大小
# 同一个仓库源可以有多个 TAG,代表这个仓库源的不同版本,我们使用REPOSITORY:TAG 定义不同的镜像,如果你不定义镜像的标签版本,docker将默认使用 lastest(最新版本) 镜像! # 可选项
-a: 列出本地所有镜像
-q: 只显示镜像id
--digests:显示镜像的摘要信息
docker search
# 搜索镜像
[root@iZh40ti53pk77iZ blog]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11156 [OK]# docker search 某个镜像的名称 对应DockerHub仓库中的镜像 # 可选项
--filter=stars=50 : 列出收藏数不小于指定值的镜像。
docker pull
[root@iZh40ti53pk77iZ blog]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
33847f680f63: Pull complete #采用分层下载的策略
5cb67864e624: Pull complete
1a2b594783f5: Pull complete
b30e406dd925: Pull complete
48901e306e4c: Pull complete
603d2b7147fd: Pull complete
802aa684c1c4: Pull complete
715d3c143a06: Pull complete
6978e1b7a511: Pull complete
f0d78b0ac1be: Pull complete
35a94d251ed1: Pull complete
36f75719b1a9: Pull complete
Digest: sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest# 签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真实位置
# 指定版本下载
[root@kuangshen ~]# docker pull mysql:5.7 ....
docker rmi
# 删除镜像
docker rmi -f 镜像id # 删除单个
docker rmi -f 镜像名:tag 镜像名:tag # 删除多个
docker rmi -f $(docker images -qa) # 删除全部
容器命令
说明:有镜像才能创建容器,我们这里下载一个CentOS镜像来进行测试
docker pull centos
新建容器并启动
# 命令
docker run [OPTIONS] IMAGE [COMMAND][ARG...]
# 常用参数说明
--name="Name" # 给容器指定一个名字
-d # 后台方式运行容器,并返回容器的id!
-i # 以交互模式运行容器,通过和 -t 一起使用
-t # 给容器重新分配一个终端,通常和 -i 一起使用
-P # 随机端口映射(大写)
-p # 指定端口映射(小结),一般可以有四种写法 ip:hostPort:containerPort (主机ip+主机端口号+容器端口号) ip::containerPort (主机ip+容器端口号)hostPort:containerPort (主机端口号+容器端口号)(常用) containerPort (容器端口号)
# 测试
[root@iZh40ti53pk77iZ blog]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest c60d96bd2b77 17 hours ago 514MB
centos latest 300e315adb2f 7 months ago 209MB
# 使用centos进行用交互模式( -it )启动容器,在容器内执行/bin/bash命令!
[root@iZh40ti53pk77iZ blog]# docker run -it centos /bin/bash
[root@7c4a18af243e /]# ls # 注意地址,已经切换到容器内部了!
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
[root@7c4a18af243e /]# exit # 使用 exit 退出容器
exit
[root@iZh40ti53pk77iZ blog]#
列出所有运行的容器
# 命令
docker ps [OPTIONS]
# 常用参数说明
-a # 列出当前所有正在运行的容器 + 历史运行过的容器
-l # 显示最近创建的容器
-n=? # 显示最近n个创建的容器
-q # 静默模式,只显示容器编号。
退出容器
exit # 容器停止退出
ctrl+P+Q # 容器不停止退出
启动、停止容器
docker start (容器id or 容器名) # 启动容器
docker restart (容器id or 容器名) # 重启容器
docker stop (容器id or 容器名) # 停止容器
docker kill (容器id or 容器名) # 强制停止容器
删除容器
docker rm 容器id # 删除指定容器
docker rm -f $(docker ps -a -q) # 删除所有容器
docker ps -a -q|xargs docker rm # 删除所有容器
常用其他命令
后台启动容器
# 命令
docker run -d 容器名# 例子
[root@iZh40ti53pk77iZ blog]# docker run -d centos # 启动centos,使用后台方式启动
371085cc988807036498eaa84109528537f353b75f675fb30714a63bac767969
[root@iZh40ti53pk77iZ blog]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES# 问题: 使用docker ps 查看,发现容器已经退出了!
# 解释:Docker容器后台运行,就必须有一个前台进程,容器运行的命令如果不是那些一直挂起的命令,就会自动退出。
# 比如,你运行了nginx服务,但是docker前台没有运行应用,这种情况下,容器启动后,会立即自杀,因为他觉得没有程序了,所以最好的情况是,将你的应用使用前台进程的方式运行启动。
查看日志
# 命令
docker logs -f -t --tail 容器id
# 例子:我们启动 centos,并编写一段脚本来测试玩玩!最后查看日志[root@iZh40ti53pk77iZ blog]# docker run -d centos /bin/bash -c "while true;do echo hello;sleep 1;done"[root@iZh40ti53pk77iZ blog]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5038eabb3d86 centos "/bin/bash -c 'while…" 17 seconds ago Up 16 seconds nice_tu# -t 显示时间戳
# -f 打印最新的日志
# --tail 数字 显示多少条![root@iZh40ti53pk77iZ blog]# docker logs -tf --tail 10 5038eabb3d86 # 输出容器中的10条日志
2021-07-23T02:52:09.030127690Z hello
2021-07-23T02:52:10.031872640Z hello
2021-07-23T02:52:11.033675362Z hello
2021-07-23T02:52:12.035598214Z hello
2021-07-23T02:52:13.037466342Z hello
2021-07-23T02:52:14.039246693Z hello
2021-07-23T02:52:15.041016744Z hello
2021-07-23T02:52:16.042876605Z hello
2021-07-23T02:52:17.044731568Z hello
查看容器中运行的进程信息
# 命令
docker top 容器id # 测试
[root@iZh40ti53pk77iZ blog]# docker top 04c7cf5f4794
UID PID PPID C STIME TTY TIME CMD
root 4773 4752 0 10:56 pts/0 00:00:00 /bin/bash
查看容器/镜像的元数据
# 命令
docker inspect 容器id # 测试
[root@iZh40ti53pk77iZ blog]# docker inspect 04c7cf5f4794
[{# 完整的id,有意思啊,这里上面的容器id,就是截取的这个id前几位!"Id": "04c7cf5f47946e9ae08cd527747550a54e266ce58a3b1c703d221c5e5d3df0c8","Created": "2021-07-23T02:56:55.317061124Z","Path": "/bin/bash",# 传递的参数"Args": [],# 状态"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 4773,"ExitCode": 0,"Error": "","StartedAt": "2021-07-23T02:56:55.608672352Z","FinishedAt": "0001-01-01T00:00:00Z"},# 使用的镜像"Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",...
进入正在运行的容器
# 命令1
docker exec -it 容器id bashShell# 测试1
[root@iZh40ti53pk77iZ blog]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
04c7cf5f4794 centos "/bin/bash" 7 minutes ago Up 7 minutes confident_jackson
[root@iZh40ti53pk77iZ blog]# docker exec -it 04c7cf5f4794 /bin/bash
[root@04c7cf5f4794 /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr# 命令2
docker attach 容器id# 测试2
[root@iZh40ti53pk77iZ blog]# docker attach 04c7cf5f4794
[root@04c7cf5f4794 /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
[root@04c7cf5f4794 /]# # 区别
# exec 是在容器中打开新的终端,并且可以启动新的进程
# 以exec的方式进入容器后使用exit,不会使容器停止,如下:
[root@iZh40ti53pk77iZ blog]# docker exec -it b2fc2f281760 /bin/bash
[root@b2fc2f281760 /]# exit
exit
[root@iZh40ti53pk77iZ blog]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b2fc2f281760 centos "/bin/bash" 58 seconds ago Up 58 seconds dreamy_ellis# attach 进入一个已经运行的容器的终端,然后进行命令执行的动作,不会启动新的进程
# 以attach的方式进入容器后使用exit会导致整个容器停止,如下图:
[root@iZh40ti53pk77iZ blog]# docker attach b2fc2f281760
[root@b2fc2f281760 /]# exit
exit
[root@iZh40ti53pk77iZ blog]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
从容器内拷贝文件到主机上
# 命令
docker cp 容器id:容器内路径 目的主机路径# 测试
# 容器内执行,创建一个文件测试
[root@iZh40ti53pk77iZ blog]# docker attach 990e2dee4f48
[root@990e2dee4f48 /]# cd /home
[root@990e2dee4f48 home]# ls
# 在容器内创建一个hello.java文件
[root@990e2dee4f48 home]# touch hello.java
[root@990e2dee4f48 home]# exit
exit
[root@iZh40ti53pk77iZ blog]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
990e2dee4f48 centos "/bin/bash" 3 minutes ago Exited (0) 12 seconds ago practical_proskuriakova
# 开始复制
[root@iZh40ti53pk77iZ blog]# docker cp 990e2dee4f48:/home/hello.java /www/wwwroot/blog
# 查看是否复制成功
[root@iZh40ti53pk77iZ blog]# ls
demo2-0.0.1-SNAPSHOT.jar hello.java log nohup.out
小结
常用命令总结
attach Attach to a running container # 当前 shell 下 attach 连接指定运行镜像
build Build an image from a Dockerfile # 通过 Dockerfile 定 制镜像
commit Create a new image from a container changes # 提交当前容器为新的镜像
cp Copy files/folders from the containers filesystem to the host path #从容器中拷贝指定文件或者目录到宿主机中
create Create a new container # 创建一个新的容器,同 run,但不启动容器
diff Inspect changes on a container's filesystem # 查看 docker 容器变化
events Get real time events from the server # 从 docker 服务获取容 器实时事件
exec Run a command in an existing container # 在已存在的容器上运行命令
export Stream the contents of a container as a tar archive # 导出容器的内容流作为一个 tar 归档文件[对应 import ]
history Show the history of an image # 展示一个镜像形成历史
images List images # 列出系统当前镜像
import Create a new filesystem image from the contents of a tarball # 从 tar 包中的内容创建一个新的文件系统映像[对应export]
info Display system-wide information # 显示系统相关信息
inspect Return low-level information on a container # 查看容器详细信息
kill Kill a running container # kill 指定 docker 容器
load Load an image from a tar archive # 从一个 tar 包中加载一个镜像[对应 save]
login Register or Login to the docker registry server # 注册或者登陆一个 docker 源服务器
logout Log out from a Docker registry server # 从当前 Docker registry 退出
logs Fetch the logs of a container # 输出当前容器日志信息
port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT # 查看映射端口对应的容器内部源端口
pause Pause all processes within a container # 暂停容器
ps List containers # 列出容器列表
pull Pull an image or a repository from the docker registry server # 从docker镜像源服务器拉取指定镜像或者库镜像
push Push an image or a repository to the docker registry server # 推送指定镜像或者库镜像至docker源服务器
restart Restart a running container # 重启运行的容器
rm Remove one or more containers # 移除一个或者多个容器
rmi Remove one or more images # 移除一个或多个镜像[无容器使用该 镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
run Run a command in a new container # 创建一个新的容器并运行一个命令
save Save an image to a tar archive # 保存一个镜像为一个 tar 包[对应 load]
search Search for an image on the Docker Hub # 在 docker hub 中搜索镜像
start Start a stopped containers # 启动容器
stop Stop a running containers # 停止容器
tag Tag an image into a repository # 给源中镜像打标签
top Lookup the running processes of a container # 查看容器中运行的进程信息
unpause Unpause a paused container # 取消暂停容器
version Show the docker version information # 查看 docker 版本号
wait Block until a container stops, then print its exit code # 截取容器停止时的退出状态值
相关文章:

fastJson的使用
Movie MovieJSON.parseObject(result, Movie.class); Toast.makeText(MainActivity.this, Movie.getDir()Movie.getNm()Movie.getPhotos().size(), 0).show(); 对于jsonArray,也就是先得到具体的某一个jsonarray,然后parseArray. JSONObject object new JSONObject(arg0); …

【C#】ASP.NET网页中添加单点登录功能
背景 首先,要说明的是,原先需求定义的是,同一个账号只能同时有一个人来登录,如果另外一个登录的话,前一个登陆者就自动被踢掉。本来原先要做成存储到服务器的数据库中,但是后来如果是非正常退出的话 下次就…

基于Python和OpenCV的目标跟踪学习教程 Object Tracking using Python and OpenCV
实现12种不同的算法来跟踪视频和网络摄像头中的对象! 你会学到: 使用Python和OpenCV跟踪视频和网络摄像头中的对象 理解跟踪算法的基本直觉 实现12种跟踪算法 了解对象检测和对象跟踪之间的区别 要求 程序设计逻辑 基本Python编程 MP4 |视频:h264,128…

【12】AngularJS 事件
AngularJS 事件 AngularJS 有自己的 HTML 事件指令。 ng-click 指令 ng-click 指令定义了 AngularJS 点击事件。 <div ng-app"" ng-controller"myCtrl"><button ng-click"count count 1">点我!</button><p>…

Docker初学4:下载运行一些必要的镜像
下载运行一些必要的镜像 下载运行nginx # 下载命令 docker pull nginx# 试运行 # -d 后台运行 # --name 设置容器名称 # -p 设置开放的端口号,宿主机端口端口号、容器端口号 [rootiZh40ti53pk77iZ blog]# docker run -d --name nginx01 -p 8083:80 nginx be2700af…

实验1 命令解释程序的编写
实验1 命令解释程序的编写 一、 实验目的 (1)掌握命令解释程序的原理; (2)掌握简单的DOS调用方法; (3)掌握C语言编程初步。 二、 实验内容和要求 1、实验内容:根据教师指…
人工神经网络:感知器
人工神经网络:感知器 1.1 基本概念 1、输入节点:X1{x1,x2,x3,...,xi,...xn},for example,X1[1 2]; 2、输出节点:y{y1,y2},for example,y[0 1]; 3、权值:W{w1,w2,w3,...,wi,...,wn},for example,W[1 1];感知器学习规则…

基于Python的完全监督机器学习教程 Complete Supervised Machine Learning With Python
这门由行业和学术领袖开设的课程是为那些希望在数据科学领域建立有价值的职业生涯的人开设的 你会学到: 监督学习和非监督学习的原理及其区别。 线性和逻辑回归,决策树,回归树,随机森林,判别分析,支持向量机ÿ…

「UI 测试自动化selenium」汇总
《selenium 基础之java实现》 selenium RC 环境配置 菜鸟学自动化测试(一)----selenium IDE 菜鸟学自动化测试(二)----selenium IDE 功能扩展 菜鸟学自动化测试(三)----selenium 命令 菜鸟学自动化测试&…

Docker初学5:下载安装可视化图形工具Portainer
下载安装可视化图形工具Portainer # 搜索Portainer [rootiZh40ti53pk77iZ ~]# docker search portainer NAME DESCRIPTION STARS OFFICIAL AUTOMATED portainer/portainer This Repo is …

dropbear编译安装及服务脚本编写
编译安装下载dropbear、并解压# wget http://matt.ucc.asn.au/dropbear/releases/dropbear-2015.67.tar.bz2 # tar xvf dropbear-2015.67.tar.bz2 # cd dropbear-2015.67 # ./configure --prefix/usr/local/dropbear --sysconfdir/etc/dropbear编译安装dropbear,要…

系统动力学_System Dynamics
1 系统动力学概述 系统动力学的创建标志是Jay.W.Forrester教授的Industrial Dynomics专著于1961年的出版。 1.1 系统动力学的基本概念(Basic Concept of System Dynamics) (1)事件:是指一般在固定的时间或地点上发生…

完整的Python 3和树莓Pi大师课 Complete Python 3 and Raspberry Pi Masterclass
在一门课程中学习Python 3基础、高级Python、科学Python、树莓Pi和硬件项目 你会学到: Python 3基础 Python 3高级概念 树莓皮的设置和使用 科学巨蟒生态系统 NumPy和Matplotlib基础 图像处理 机器学习和数据科学基础 使用MySQL、Excel、明文和CSV Python发行版 树莓皮的硬件及…

JVM学习1:JVM和Java体系结构
JVM和Java体系结构 计算机本身是不识别高级语言的,这个大家应该都知道,我们的Java、C、Python这些代码都要执行下面的一个流程 随着Java7发布以后,Java虚拟机可以根据JSR-292标准实现在Java虚拟机平台上运行非Java的语言编写的程序ÿ…

BitMap 内存使用优化
在Android应用里,最耗费内存的就是图片资源。而且在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常。所以,对于图片的内存优化,是And…

js中字符串转化为进制以及进制转化
利用javascript进行进制转换的方法 今天在做网站时用到了进制的转换,于是在网上搜索,发现可以直接利用javascript的toString()方法和parseInt()方法进行十进制和其他进制之间的转换,这里对他们的用法进行一下整理。 toString()方法&#x…

QGC地面站参数调节
校准: 1.选择机架:一般用DJI Flame Wheel F450机架,选择之后点击“应用并重启”; 2.传感器校准:无人机会重新连接地面站,依次校准“磁罗盘”、“陀螺仪”,“加速度计”、“地平线”;…

Object类解析
声明:该Java常用类分析基于JDK1.8 Object类 概述 官方介绍: 翻译内容: Object类是类层次结构的根。每个类都有Object作为父类。所有对象,包括数组,都实现这个类的方法。 其中class hierarchy这个词组翻译为类的继承…

用Python构建网页抓取器
借助使用Python构建的尖端网页抓取技术,启动您的大数据项目 Scrape the Planet! Building Web Scrapers with Python 你会学到什么 如何理论化和开发用于数据分析和研究的网页抓取器和蜘蛛 什么是刮刀和蜘蛛? 刮刀和蜘蛛有什么区别? 刮刀和蜘…

Apache JMeter2.13 实战
安装目录下 设置浏览器代理127.0.0.1 8080,以chrome为例 开始录制脚本,进入应用点击相应的功能,可以捕获到如下地址 去除无用地址,保留需要测试的地址 注:上图编号列表中11为获取cookie请求,不能删除&#…

大数据系列6:HBase – 基于Hadoop的分布式数据库
2019独角兽企业重金招聘Python工程师标准>>> wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz tar -xzvf zookeeper-3.4.5.tar.gz cd zookeeper-3.4.5 cp conf/zoo_sample.cfg conf/zoo.cfg vi conf/zoo.cfg 修改&…

下载源码、编译
源码官网:https://github.com/PX4/Firmware/ 在Branch:master中选择第二个Tags下面就是源码版本,可以选择下载最新版本。 下载指令 git clone -b v1.11.0 https://github.com/PX4/Firmware.git --recursive 根据下载的版本更换版本号,这里下…

CSS、JavaScript、PHP和Python编程合二为一
CSS, JavaScript,PHP And Python Programming All in One Course 在一门课程中学习Javascript、PHP和Python编程语言的CSS 你会学到: CSS和JavaScript概念介绍,PHP编程语言和Python编程语言 编写CSS脚本和理解概念 CSS样式、CSS 2D变换、CSS三维变换入门 Javascrip…

maven工程出现java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener...
经过百度,发现网上很多方法虽然描述的错误和我的一样,但是发现都不适我自身的这种情况.后来我自己解决了.解决方法如下: 接着:update一下工程 最后:就可以直接在这里run一下了. 转载于:https://www.cnblogs.com/fengxuanyuan/p/5210910.html

操作系统学习1:操作系统概述
操作系统概述 什么是操作系统? 操作系统(Operating System,简称OS)是一个系统软件,它管理计算机的软硬件资源,并为计算机程序提供服务。 操作系统的五大功能 文件管理 文件管理包括:存储空间…

1578: [Usaco2009 Feb]Stock Market 股票市场
1578: [Usaco2009 Feb]Stock Market 股票市场 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 414 Solved: 199[Submit][Status][Discuss]Description 尽管奶牛们天生谨慎,她们仍然在住房抵押信贷市场中受到打击,现在她们开始着手于股市。 Bessie很有…

代码部分分区域突破
代码结构 board部分 在这里主要是用到了里面的px4部分,里面包含各种编译版本,主要现在用的就是fmu-v5版本,打开后里面需要在default.cmake里面找到MODULES,在下面添加自己写的文件名字。 这里是有四个串口,如果设备想要获取信息…

用Python和项目进行机器学习(初学者) Machine Learning A-Z with Python with Project (Beginner)
初学者用Python完成机器学习课程 你会学到: Python上的主机器学习 进行有力的分析 做出准确的预测 制作健壮的机器学习模型 将机器学习用于个人目的 建立一支强大的机器学习模型大军,并知道如何将它们结合起来解决任何问题 使用K-均值聚类、支持向量机(SVM)、KNN、…

操作系统学习2:操作系统的发展和概览
操作系统的发展和概览 手工阶段(电子管时代) 特点: 用户独占全机 用户独占计算机所有资源,资源利用率低CPU等待用户 计算前,手工装入纸带或卡片;计算完成后,手工卸取纸带或卡片;C…

java内存数据管理
准确的说应该是java8以前的内存管理方式 区别在永久代(方法区)上 public class RamManager {//1.a存储于永久代public static int a 1;private String str;private int x;private AA aaa; // method_1方法位于栈中// temp1保存的是引用地址,在栈中public void me…