Docker学习04-常用命令
0x00 帮助启动类
启动docker:systemctl start docker 停止docker:systemctl stop docker 重启docker:systemctl restart docker 查看docker状态:systemctl status docker 开机自启动:systemctl enable docker 查看docker概要信息:docker info 查看docker总体帮助文档:docker --help //和Linux一样,有问题,问男人 man mkdir之类的 查看docker命令帮助文档:docker 具体命令 --help 如:docker command --help
0x01 镜像命令
01、docker images:列出本地所有镜像
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签,版本号
IMAGE ID:镜像ID
CREATED:镜像创建时间
VIRTUAL SIZE:镜像大小
同一个仓库源可以有多个TAG版本,代表这个仓库员的不同版本,我们使用REPOSITORY:TAG来定义不同的镜像。如果你不指定一个镜像的版本标签,例如你只使用ubuntu,docker将默认使用ubuntu:lastest镜像
docker images -a 列出本地所有镜像(含有历史映像层) docker images -q 只显示镜像ID
02、docker search:搜寻某个镜像是否在远程仓库
里面有各个不同的组织,一般选第一个就行,点赞数最多,官方的。
docker search redis docker search --limit redis //只列出N个镜像,默认是前25个 docker search --limit 5 redis //这条命令就足够了,limit和redis的顺序无所谓
03、docker pull:下载镜像
同
git pull
docker pull mysql <===> docker pull mysql:lastest //下载最新版mysql docker pull mysql:5.6 //下载mysql5.6版本
注意,
docker pull不能同时拉取,一个一个来,并且无法拉取多个镜像,以后可以写个
yml文件,使用
docker-compose来拉取多个。
04、docker system df:查看镜像/容器/数据卷所占的空间
其实是类似于Linux的
df -h,以
human的显示方式查看所占用的空间
05、docker rmi: remove image删除镜像
docker rmi IMAGE ID/REPOSITORY //可以是ID,也可以是名字,建议ID docker rmi -f ID //强制删除,有时候会报错,因为container在使用这个镜像 docker rmi -f 镜像名1:TAG 镜像名2:TAG //删除多个镜像 docker rmi -f $(docker images -aq) //删除全部镜像,这条命令到公司的生产环境千万不能敲!删库到坐牢!危险!!!!!! //命令解释:后面的docker images -aq 表示展示出所有的镜像ID,通过$传递给前面的删除命令,类似于mysql的 delete from users where id in(1,2,3,4,5....)
06、docker 虚悬镜像是什么?(面试题)
docker构建的时候,可能会出现问题,即仓库名和标签都是
<none>的image,出现了就建议删除。
07、思考
结合
Git学习心得,猜想是否有
docker commit/docker push???
0x02 容器命令
再次复习docker的理论知识:
docker 并非是一个通用的容器工具,它依赖于已经存在并运行的Linux内核环境。实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的Linux主机。因此,Docker必须部署在Linux内核系统上,如果其他系统想部署Docker就必须安装一个虚拟Linux环境。
左边的图
因为docker必须建立在Linux内核上,所以我们win10系统会创建一个虚拟机,从而搭建一个centos7。在此基础上我们搭建的docker,在搭建一个超级小的Centos
右边的图
为了防止混淆懵逼,可以看右边的图。Centos7可以被当成阿里云,上面建立了一个Docker,然后再安装精简版的ubuntu
平时搭建环境的时候,都是新建各种虚拟机,一次就得小半天。
当学会了docker后,可以在docker的基础上,新建一些别的虚拟机。
01、docker run
在java和php中,使用new来实例化一个对象,在docker中,使用run
启动交互式容器
重点参数
--name指定名称
-d后台运行容器并返回容器ID,即启动守护试容器(后台运行)
-i以交互模式运行容器,通常与
-t同时使用,
interactive
-t即Linux的
tty,为容器重新分配一个伪输入终端,通常与
-i同时使用,即启动交互式容器(前台有伪终端,等待交互,说白了就是等待用户输入命令)
说白了,我们可以直接使用
docker run ubuntu,但是这样的结果就是下图,没有任何的其他操作了
如果我们想要对这个ubuntu进行操作,需要一个前台终端,如下
docker run -it ubuntu /bin/bash
相当于跑到集装箱里面干活了,里面没有任何的命令,很正常,它毕竟只是启动了启动ubuntu所需最小的组件,需要别的到时候再装
-P:随机端口映射,大写P,一般不用这个命令
-p:指定端口映射,小写p,一般都是用这个命令
如这张图,大方框是鲸鱼,背上驮着
tomcat与
redis,那么我们怎么才能访问到里面的各种服务呢?需要做端口映射。左边的6379是centos宿主机的端口,右边即里面各种集装箱服务的端口。
docker run redis -p 6379:6379
docker run -it --name=u4 ubuntu /bin/bash docker run -it --name=u5 ubuntu /bash //这两个命令效果一样,但是书写命令时,保证选项在前,镜像名靠后,交互式终端最后
选项说明:PORTS这里是空的,因为ubuntu不需要端口映射
02、docker ps列出所有正在运行的容器
docker ps //罗列正在运行的containers docker ps -a //罗列历史所有containers,包括删除的,退出停止的 docker ps -l //罗列最近创建的容器 docker ps -n //显示最近N个创建的容器 docker ps -q //静默模式,只显示容器编号
03、退出容器
exit退出并且停止容器运行
ctrl+p+q退出但是不停止容器运行
04、启动、停止运行容器
docker start ID 重启容器 docker stop ID 停止容器 docker kill ID 强制停止容器
启动和停止容器都可以批量操作。
05、删除已经停止容器
docker rmi中的
i表示
images,去掉
i就表示删除容器了
docker rm ID 删除已经停止的容器,无法删除正在运行的 docker stop ID docker rm -f ID 强制删除正在运行的
06、一次删除多个容器实例(危险命令)
docker rm -f $(docker ps -a -q) docker ps -a -q | xargs docker rm //将上一个结果参数,集成在xargs然后执行删除命令,保证删除干净
0x03 重要命令——启动守护式容器
01、守护式进程启动容器
在大部分的场景下,我们希望docker的服务是在后台运行的,我们可以通过
-d指定容器的后台运行模式。
docker run -d 镜像名
这里演示一下,可以看到并没有容器启动。所以要养成一个习惯,每次run起来一个容器,一定要使用
ps来查看。那么这里为什么没有运行呢?
Docker容器后台运行,就必须要有一个前台进程,容器运行的命令如果不是那些一直挂起的命令(比如运行top、tail),就是会自动退出的。平时我们运行apache或者nignx在后台,他会一直开着等待我们运行他们。但是docker不一样,docker认为我在后台开着,前台没有人用我,没人需要我,我就自杀了。当一个人没有被需要的价值,就会自闭。但是注意,是有些镜像!!不是所有镜像都是如此!!下方的ubuntu和redis就是个对比例子!
docker run -d ubuntu docker ps docker run -d redis:6.0.8 docker ps
02、容器日志查看
假设我开的集装箱太多了,我要查看容器怎么办?
Devops工程师职责:编码开发微服务、上线部署容器化、时时刻刻要监控。
docker logs 容器ID
到时候我们学可视化工具,这个命令就不怎么用到了,不过也要会敲!
03、查看容器内运行的进程
docker top 容器ID
04、查看容器内部细节
再次复习理论:可以把容器看作是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
docker inspect 容器ID
05、进入正在运行的容器并以命令行交互
docker exec -it 容器ID /bin/bash docker exec -d 容器ID //不常用 docker attach 容器ID //不需要输入bin bash
docker exec和
docker attach的区别:
docker exec是在容器中打开新的终端,并且可以启动新的进程,用
exit退出,不会导致容器的停止。
docker attach直接进入容器启动命令的终端,不会启动新的进程,用
exit退出,会导致容器的停止。
下面用redis进行演示的时候我要特殊记一下,因为这个命令更能体现出
docker的特点,自己体会吧!
06、从容器中拷贝文件到主机
将docker启动的一个ubuntu主机里面的文件拷贝出来,支持递归复制!
docker cp 容器ID:容器文件绝对路径 主机绝对路径 docker cp
07、导入导出容器
这个就更好理解了,上面的将文件拷贝出来,就是一个简单的文件备份,如果我想要把整个容器全部导出来,全部备份,也是可以的。
同时导出和导入容器可以用来制作属于自己的容器内容。
导出容器:
docker export 容器ID > 名字(自定义).tar //导出容器的内容流作为一个tar归档文件,可以理解成导出一个全新的镜像。导出的路径默认为终端的 cat 文件名.tar | docker import - 镜像用户(自定义)/镜像名(自定义):镜像版本号(自定义) //注意中间有个-,这个-呢,左右两边空格不能省略!!
0x03 小总结
有些不常用的例如暂停啥的,暂不深入。有兴趣可以深入。
- Docker学习--docker安装(centos7.x)及常用命令
- Docker学习笔记-docker常用命令大全(三)
- Docker学习笔记(2)--Docker常用命令
- docker学习总结之常用命令
- Docker技术学习(二) - Docker常用命令
- Docker学习--(二)Docker常用命令
- Java大数据学习04--HDFS的工作机制和常用命令介绍
- Docker学习总结(9)——Docker常用命令
- 学习笔记(04):玩转Linux:常用命令实例指南-漫游你的电脑:不可不学的文件管理命令(二)...
- Docker学习——docker常用命令
- Docker学习总结(9)——Docker常用命令
- docker学习笔记1—常用命令
- Docker学习笔记二:Docker常用命令及提升拉取镜像的速度
- Docker入门学习(3)----Docker架构与常用命令总结
- Docker 学习(九) Docker Compose 常用命令
- docker学习之三docker常用命令
- Docker学习之常用的基础命令总结
- Docker学习笔记常用命令持续整理
- Docker学习路线(3)—— Docker常用命令
- DOCKER学习笔记-常用命令