网站首页 > 技术文章 正文
往期文章
「快学Docker」Docker简介、安装和Hello World实现
关注获取学习资料
关注我,私信【电子书】,【视频】,即可获取大量优质电子书和大数据、kafka、nginx、MySQL等视频资料
前言
容器是Docker的三大核心概念之一。简单地说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。通过这篇文章,我们来讲讲Docker容器的一些常用命令,如创建,停止,重启,暂停等等。
原创声明
本文首发于头条号【Happyjava】https://www.toutiao.com/c/user/85644464579/ 欢迎转载,但须保留此段声明。
创建容器
新建容器
命令如下:
docker create <image>
使用create 命令创建的容器,默认处于停止状态,需要我们手动去启动容器。
新建并运行容器
命令如下:
docker run <image>
通过run命令创建的容器,默认是会运行的。
常用参数如下:
-i 让容器的标准输入保持打开
-t 分配一个伪终端
-d 容器处于守护进程运行
--name 设置容器的名字
-p 可以映射宿主机端口至容器端口,如 -p 8080:8081 ,左边为宿主机端口,右边为容器端口
-v 可以挂在宿主机目录至容器目录,如-v /data:/tmp/data,左边为宿主机目录,右边为容器目录。
如,一条实际运行容器的命令:
docker run -it -d --name my_ubuntu -p 8088:22 -v /root/ubuntu_data:/data ubuntu:latest /bin/bash
容器管理
查看容器列表
命令如下:
docker ps
docker ps 是查看正在运行的容器,可以添加-a 参数,查看所有容器的信息。
停止容器
停止容器的命令:
docker stop <container_name/id>
启动容器
docker start <container_name/id>
重启容器
docker restart <container_name/id>
删除容器
命令如下:
docker rm <container_id/name>
如果是正在运行的容器,会提示删除失败,可以通过 -f 参数强制删除。例如,删除正在运行的 my_ubuntu 容器:
docker rm -f my_ubuntu
容器日志
可以通过如下命令查看容器的日志:
docker logs <id/name>
暂停容器
docker pause <id/name>
通过docker ps 命令可以查看到容器的状态
恢复暂停的容器
docker unpause <id/name>
进入容器
如果我们创建容器时,使用了 -d 参数,那么容器就会在后台运行。那么,我们可以通过 docker attach 命令和 docker exec 命令连接到容器。
docker attach命令
docker attach 命令使用如下:
docker attach <container_name/id>
如,我这里连接创建的名为 my_ubuntu 的容器。
docker attach my_ubuntu
进入容器后,其实就跟ssh登录服务器效果似乎一样的:
docker attach连接容器,有一个致命的缺点,那就是当多个窗口同时attach到同一个容器时,所有窗口都会同步显示,当某个窗口阻塞了,那么所有的窗口都会被阻塞掉。例如,我通过两个终端attach到这个my_ubuntu容器,所有的操作都会被同步:
我在一个窗口输入东西,另外一个窗口也会同步。
也是因为这样,所以attach命令是比较少用的。
docker exec 命令
docker exec 本质上不是连接容器,而是在容器中执行命令,其用法如下:
docker exec -it <container_name/id> <exec>
其中<exec>是需要执行的命令,如在my_ubuntu容器下执行 /bin/bash 命令:
docker exec -it my_ubuntu /bin/bash
执行结果:
/bin/bash 这个命令,其实就是运行一个bash终端,所以我们就可以通过在容器中执行 /bin/bash命令来连接容器。
查看容器变更
容器也是支持查看变更的内容的,命令如下:
docker diff <name/id>
如,查看my_ubuntu的变更:
有三个符号,它们分别是:
提交容器
Docker也可以像git一样,可以把变动提交为新的镜像。命令如下:
docker commit <container_id/name> repo/name:tag
如,我把本地的my_ubuntu提交:
docker commit my_ubuntu test/ubuntu:personal
然后查看镜像:
提交后的镜像,可以推送到仓库上,方便测试部署等。
总结
容器作为Docker的三大核心概念之一,其有很多操作,本文也难以一一列举,只是列举出了本人认为比较常用的一些命令。
猜你喜欢
- 2024-09-12 64.手把手使用Docker
- 2024-09-12 kubernetes基础知识之docker容器和镜像
- 2024-09-12 docker 安装MongoDB(docker 安装mongodb4.4.4)
- 2024-09-12 Docker入门与实践:容器操作方法详细介绍
- 2024-09-12 Docker实战四之Docker 容器使用(docker 容器运行命令)
- 2024-09-12 【docker】:全面认识Docker和基本指令
- 2024-09-12 Docker 学习小总结(docker基础教程)
- 2024-09-12 运行Docker遇到权限问题应该如何处理?
- 2024-09-12 史上超全!Docker命令全集,值得收藏
- 2024-09-12 容器化学习-docker2生成镜像(docker手动生成镜像)
- 1512℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 550℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 502℃MySQL service启动脚本浅析(r12笔记第59天)
- 480℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 478℃启用MySQL查询缓存(mysql8.0查询缓存)
- 458℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 438℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 435℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)