【Linux】Docker常用命令
如果用户权限不足无法使用docker命令,需要先使用权限更高的用户将该用户分配到docker组中sudo usermod -aG docker {usernam}
注意:
如果使用的是VSCode连接的服务器,可能会出现每次连接后该用户的分组(输入
Gropos查看)不是最新的问题。原因:
VSCode Remote SSH 会:
保持长连接
复用 ssh control master
后台常驻 vscode-server
你以为重新连接了,其实还是原来的ssh session
解决方法:
原因清楚之后,就很好解决了,只需要将VSCode Remote SSH完全断开就好了
- 在VSCode中使用快捷键
Ctrl+Shift+p- 输入
Remote-SSH: Kill VS Code Server on Host- 选择你的服务器,并输入密码
- 重新启动VSCode
帮助命令
| docker version | 显示docker的版本信息 |
|---|---|
| docker info | 显示docker的系统信息,包括镜像和容器的数量 |
| docker 命令 –help | 帮助命令 |
镜像命令
| 查看镜像 | docker images | |
|---|---|---|
| -a, –all | 查看所有镜像 | |
| -q, –quiet | 只显示镜像ID | |
| 搜索镜像 | docker search |
|
| -f, –filter | 筛选条件eg: –filter=STARS=300 收藏大于300 | |
| 下载镜像 | docker pull |
|
| docker pull mysql:5.7 | 指定版本 | |
| 删除镜像 | docker rmi -f |
|
| -f $(docker images -aq) | 删除所有镜像 |
运行临时容器docker run --rm -i grafana/k6 run - < k6-test.js
run:运行容器--rm:运行后自动删除容器-i:可以在容器运行时提供输入,与-结合可以接收来自标准输入的内容grafana/k6:镜像名称run - < k6-test.js:需要运行的命令,- <将后面的内容传递给run
进入数据库的方法:
- 方法一
- 进入容器
docker-compose exec -it mongo bash - 在容器内执行
mongosh -u your_name -p your_password
- 进入容器
- 方法二
- 直接在一行命令中完成
docker-compose exec -it mongo mongosh -u your_name -p your_password
- 直接在一行命令中完成
docker compose 后台运行命令
docker compose up -d
容器命令
| 创建容器 | docker run |
创建并运行容器,对象是镜像 |
|---|---|---|
| –name |
命名运行后容器的名字 | |
| -d | 后台方式运行 | |
| -it | 使用交互方式运行,进入容器查看内容。-i:保持STDIN开启,即使没有连接;-i:分配一个伪终端 | |
| -p 主机端口:容器端口 | 指定容器的端口(小写p) | |
| -P | 随机指定端口(大写P) | |
| 退出容器 | exit | 停止容器并退回主机 |
| Ctrl + P + Q | 不停止容器,退回主机Ctrl+D也可以 | |
| 进入容器 | docker attach <容器id> | 进入正在运行的容器 |
| docker exec -it <容器id> /bin/bash | 进入容器,开启一个新的终端 | |
| 列出容器 | docker ps | 列出当前正在运行的容器 |
| -a | 列出所有容器(运行的容器/未运行的容器) | |
| -n=2 | 显示最近创建的2个容器 | |
| -q | 只显示编号 | |
| 删除容器 | docker rm <容器id> | 不能删除正在运行的容器 |
| docker rm -f $(docker ps -aq) | 删除所有容器 | |
| docker ps -a -q|xargs docker rm | 删除所有容器 | |
| 启动容器 | docker start <容器id> | 启动停止了的容器,对象是容器 |
| 重启容器 | docker restart <容器id> | |
| 停止容器 | docker stop <容器id> | |
| 杀掉容器 | docker kill <容器id> | 强制停止容器 |
其他重要命令
| 查看log | docker logs <容器id> | |
|---|---|---|
| -f | 会持续输出 | |
| -t | 显示时间戳 | |
| 查看容器进程 | docker top <容器id> | |
| 查看容器/镜像元数据 | docker inspect <容器id> | |
| 拷贝文件 | docker cp <容器id>:/path/fileName /path | 将容器内的文件拷贝到本机上 |
开机自启
1 | docker update --restart unless-stopped <容器id> |
验证
1 | docker inspect <容器id> --format '{{.HostConfig.RestartPolicy.Name}}' |
提交容器
将容器里修改的内容保存下来并生成新的镜像,避免删除容器后,数据丢失,与git类似
docker commit -a “提交作者” -m “提交的描述信息” <容器id> <新的镜像名>:[TAG]
docker compose
| docker compose up -d | 启动 |
|---|---|
| docker compose down | 关闭 |
设置镜像
1 | sudo vim /etc/docker/daemon.json |
填入
1 | { |
保存后
1 | sudo systemctl daemon-reload |
查看是否生效
1 | docker info |