Docker 常用命令
时间:2022-07-22
本文章向大家介绍Docker 常用命令,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、常用命令
基本命令
docker version
docker info
docker --help
官方文档:https://docs.docker.com/reference/
镜像命令
查看镜像:
// 查看所有的镜像
docker images
// 可选参数
Options:
-a, --all Show all images (default hides intermediate images)
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet Only show numeric IDs
[root@wsuo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 4 months ago 13.3kB
-
REPOSITORY
:镜像的仓库源; -
TAG
:镜像的标签; -
IMAGE ID
:镜像的 ID; -
CREATED
:镜像的创建时间; -
SIZE
:镜像的大小。
比较常用的是显示全部镜像但是只显示 ID:
[root@wsuo ~]# docker images -aq
bf756fb1ae65
搜索镜像:
docker search
可选参数:
Options:
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print search using a Go template
--limit int Max number of search results (default 25)
--no-trunc Don't truncate output
搜索大于 3000 star 的镜像:
docker search mysql --filter=stars=3000
拉取镜像:
docker pull
下载 mysql:
docker pull mysql
后面可以加上版本信息,如果不写版本则默认是最新版。
docker pull mysql:5.7 # 下载5.7版本的mysql
下载一个 centOS
镜像来测试:
[root@wsuo ~]# docker pull centos
Using default tag: latest # 默认标签
latest: Pulling from library/centos # 仓库位置
8a29a15cefae: Pull complete
Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700 # 镜像的 ID 号
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
删除镜像:
docker rmi
# 指定 ID:
docker rmi -f ID值
# 删除所有镜像
docker rmi -f $(docker images -aq)
容器命令
有了镜像才可以创建容器:
docker pull centos
创建容器并启动:
docker run [可选参数] image
--name: 容器名字 tomcat1, tomcat2 用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定端口 -p 8080
-p: 主机端口:容器端口 映射
-p: 容器端口
-P 随机指定端口
执行:
[root@wsuo ~]# docker run -it centos /bin/bash
[root@e25d08956b4a /]#
这其实就是一个套娃,我们目前使用的是容器,但是它不太完善。
从容器中退出到主机:
exit # 直接停止并退出
Ctrl+P+Q # 容器不停止退出
列出所有运行中的容器:
docker ps # 列出正在运行的容器
docker ps -a # 列出历史运行的容器
docker ps -a -n=2 # 显示最近运行的俩个容器
docker ps -q # 显示编号
[root@wsuo ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@wsuo ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e25d08956b4a centos "/bin/bash" 2 minutes ago Exited (0) 29 seconds ago inspiring_khayyam
291fe9863e6a hello-world "/hello" 45 hours ago Exited (0) 45 hours ago peaceful_fermi
删除容器:
docker rm 容器ID # 删除指定的容器,不能删除正在运行的容器
docker rm $(docker ps -aq) # 删除所有的容器
启动和停止容器的操作:
dokcer start 容器 ID # 启动容器
docker restart 容器 ID # 重启容器
docker stop 容器 ID # 停止容器
其他命令
后台启动容器
docker run -d 镜像名
查看日志命令
docker logs -tf --tail 10 容器ID # f 是 format 带上时间戳, 10 是显示10条日志信息
查看容器中的进程信息
docker top 容器ID
进入当前正在运行的容器
进入正在运行的容器,并开启一个新的终端:
docker exec -it 容器 ID bashshell
进入正在运行的命令行,而不是开启一个新的终端:
docker attach 容器 ID bashshell
从容器内拷贝文件到主机上
docker cp 容器ID:/home/demo.java /home
二、练习
1、部署 Nginx
首先在 https://hub.docker.com/ 搜索 nginx。
然后 docker pull nginx
。
docker run -d --name nginx01 -p 3344:80 nginx
# p 表示端口映射,即访问主机的 3344 端口相当于访问 nginx 的 80 端口。
# d 表示后台启动
# name 给容器命名
测试:
curl localhost:3344
返回结果:
# 进入容器修改配置文件
docker exec -it nginx01 /bin/bash
whereis nginx
cd /etc/nginx;ls
就可以修改 nginx.conf 文件了.
2、部署 Tomcat
下载镜像:
docker pull tomcat:9.0
后台启动并映射端口:
docker run -d -p 2000:8080 --name tomcat01 tomcat:9.0
访问之后:
这说明 Tomcat
是不完整的,没有默认访问路径。
因为我们拉取的默认是最小的镜像,将没有必要的都剔除了。
3、部署 ES+Kibana
- ES 十分的耗内存;
- ES 暴露的端口比较多;
- ES 的数据需要挂载到安全目录。
docker run -d --name elasticsearch -p 2001:9200 -p 2002:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
这里没有先 pull
,因为如果本地没有该镜像,他会自动去下载并运行。
直接访问 2001 端口:
- JAVA-FTP批量大文件传输
- 独家 | 一文读懂TensorFlow(附代码、学习资料)
- 解决openssh漏洞,升级openssh版本
- 解决NTPD漏洞,升级Ntpd版本
- 独家 | 手把手教TensorFlow(附代码)
- HBase Region自动切分细节
- eclipse搭建ssh后台
- 解决mysql漏洞 Oracle MySQL Server远程安全漏洞(CVE-2015-0411)
- im4java包处理图片
- centOS7 mini配置linux服务器(五) 安装和配置tomcat和mysql
- RedisPool操作Redis,工具类实例
- centOS7 mini配置linux服务器(四) 配置jdk
- 老司机教你“飙”EventBus3
- Android listView异步下载和convertView复用产生的错位问题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 容器中的数据管理
- Java基础 方法
- Python 技术篇-pyperclip库实现读取写入剪切板,超简单
- 基于consul的Docker-overlay跨多宿主机容器网络
- Python 微信机器人-向指定名称的好友发送微信消息
- JavaScript技术篇-js提升网页视频播放速率,提高慕课网视频播放速度
- 使用docker五步搭建ELK日志收集分析系统
- HDFS之SequenceFile和MapFile
- 配置ELK技术栈来分析apache tomcat日志
- LVS DR模式搭建,keepalived + lvs
- Ubuntu安装docker
- DockerFile简介与实例
- Elasticsearch2.3官方Dockerfile解析
- openstack架构解析
- Linux服务器基础网络配置