常用命令集合
docker ps --no-trunc 查看容器 docker stop/start 容器ID 停止容器 docker start 容器别名 通过容器别名启动容器 docker inspect 查看容器的基本信息 docker logs 容器别名 查看容器日志 docker stats 容器别名 查看容器所占用的系统资源 docker exec 容器名 容器内执行的命令 容器执行命令 docker exec -it 容器名 /bin/bash 登入容器bash docker port 容器名称 查询容器端口和主机端口的映射关系 特殊参数 --restart=always 容器的自动启动 -h www.baidu.com 设置容器的主机名 --dns xx.xx.xx.xx 设置容器使用的DNS服务器 --dns-search DNS搜索设置 --add-host hostname:IP 注入hostname IP解析(也就是说,在hosts文件中增加IP解析) --rm 服务停止时自动删除
一.通用命令
docker --help 命令
用法: docker [OPTIONS] COMMAND
二. 镜像的基本命令
1. 列出本机上所有的镜像
docker images -q : 查询镜像的ID
docker images --no-trunc
2. 搜索镜像
docker search 镜像名
--filter=stars=3: 列出点赞数不小于指定数值的镜像
--no-trunc: 显示完整的镜像描述
--automated: 只列出automated build类型的镜像
3. 拉取镜像
docker pull 镜像名称:tag
4. 删除镜像
docker rmi 镜像名称:tag
删除正在运行的镜像
docker rmi -f hello-world
删除全部镜像
三. 容器的基本命令
1. 运行容器
docker run -p 8080:80 -d daocloud.io/Nginx
docker run是启动容器. 启动的时候,现在本地查找镜像,如果本地没有,则去网络下载
-p 8080:80 是把虚拟机中启动的Nginx的端口号80 映射到本机的8080
-d: 表示以后台进程运行.
-P: 随机端口映射
-i: 以交互模式运行容器,通常与-t同时使用
-t: 为容器重新分配一个伪输入终端,通常与-i同时使用
daocloud.io/Nginx: 镜像名称
2. 查询正在运行的容器
docker ps
-a: 列出历史运行过的所有容器 + 当前正在运行的容器
-l: 显示最近创建的容器
-n: 显示最近n个创建的容器
-q: 静默模式,只显示容器编号
--no-trunc: 不截断输出
3. 在本机和容器之间拷贝文件
如: 拷贝index.html替换Nginx的默认index.html页面
docker cp ./index.html 1a2aa74fb4e5://usr/share/Nginx/html
4. 停止docker容器
docker stop 1a2aa74fb4e5
docker stop 容器号
我们将Nginx停止. 然后在重启
浏览器访问localhost:8080,发现又回到Nginx的启动页了. 我们不是修改为自己的页面了,怎么回事呢?
因为对docker内的文件进行的修改,默认是不会保存的,当停止服务,再重启以后,就恢复为默认的了
如何对可以持久对docker的修改生效呢? 使用docker commit
5. 保存改动为新的image
docker commit -m 'fun' 2a2f3a5c960f fun-Nginx
这段代码的含义是,提交对docker容器所做的修改,并起了一个名字叫fun. 容器的名字叫fun-Nginx.
2a2f3a5c960f表示提交的镜像是谁.
我们来看看现在有几个Nginx的镜像
现在有两个镜像,其中fun-Nginx是我们刚建的. 我们可以删除一个.
6. 退出容器
7.删除容器
docker rm 容器id1 容器id2 ....
使用docker ps,可以查看已经启动的容器.
使用docker ps -a,可以查看全部容器,包括未启动的容器
我们看到有这么多的镜像
有些镜像是不需要的,我们可以删除多余的elasticsearch容器
四. 重要
1. 启动守护式容器
docker run -d 容器名
在后台进程中启动
使用守护进程的方式启动容器,会有一个问题: 使用docker ps -a,发现容器已经退出
重点: docker容器后台运行,就必须有一个前台进程,容器运行的命令如果不是那些一直挂起的命令(比如top,tail),就会自动退出. 这个是docker的机制,比如web容器,以Nginx为例,正常情况下,我们配置启动服务只需要启动相应的service即可,例如: service Nginx start. 但是,这样做,Nginx为后台模式运行,就导致docker前台没有运行的应用. 这样的容器后台启动后,会立即自杀,因为他觉得没哟碃可以做. 所以,最佳的的解决方案是,将你要运行的程序以前台进程的形式运行
docker run -d Nginx /bin/sh -c "while true; do echo hello zzyy; sleep 2; done"
在控制台持续输出hello zzyy,2秒钟打印一次
2. 查看容器日志
docker logs -f -t --tail 数字 容器ID
-t: 是加入时间戳
-f: 跟随最新的日志打印
--tail 数字: 显示最多多少条
3. 查看容器内运行的进程
docker top 容器id
4. 查看容器内部的细节
docker inspect 容器ID
docker容器内部是洋葱环,一层套一层. inspect就是查看容器内部的细节的
5. 进入正在运行的容器并以命令行交互
进入正在运行的容器: docker exec -it 容器ID bashShell
重新进入: docker attach 容器ID
上述二者的区别:
举例: 现在运行一个容器
docker run -d
进入到了容器里面,想要退出的话ctr + c
在想要进入到这个容器,进入的是容器的根目录
docker attach 容器ID
docker exec -t 容器ID ls -l /tmp/
6. 从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目标主机地址
原文链接:https://www.f2er.com/docker/997112.html