docker常用命令及参数的用法解读
作者:小凯 ོ
docker常用命令以及各种参数, 包括安装,卸载,重启docker,查看日志 ,进入容器内部等详细介绍。
流程框架
我们大体可以分为, 镜像命令,和容器命令 2个大部分。
一、镜像命令
1- 拉取镜像
docker pull nginx:1.25.4
2- 推送镜像
docker push dashu/centos79:v1
因为涉及到 登录仓库的的知识,这个push 命令会在这篇文章中详细介绍
3-查看所有镜像
docker images
4-删除镜像
docker rmi 镜像名:版本号
比如: 删除nginx 镜像
docker rmi nginx:1.25.4
以上是对镜像操作的相关命令
二、 容器命令
1-运行并创建容器
docker run -d \ --name dashu-nginx \ -p 8080:80 \ nginx:1.25.4
为了方便上边的命令,我给大家换行操作了,当然你也可以不用换行,直接:
docker run -d --name dashu-nginx -p 6060:80 nginx:1.25.4
给大家解释一下,各参数的意思
(1) -d 表示 后台运行
(2) --name 表示给容器起一个名字
(3) -p 端口映射
这块详细的可以参考这篇文章
(4) 最后跟上镜像的名称:版本
启动后我们访问一下 我们的nginx:
http://10.0.0.199:6060/
2- 查看运行的容器
docker ps
3- 停止容器
docker stop dashu-nginx
4- 启动容器
docker start dashu-nginx
后边都是加的容器名字,
当然你可以用容器的id
5- 查看容器日志(docker日志命令)
docker logs dashu-nginx
在工作中常用的是要加一个参数 -f
意思是 follow ,时刻跟随
docker logs dashu-nginx -f
我们访问nginx 的时候, 会把日志实时打印在控制台,方便我们调试应用程序。
我们不想用了可以用 ctrl + c 来结束
6- 进入容器 (exec)
docker exec -it dashu-nginx /bin/bash
解释: exec 是英文executive 执行程序的缩写。
-it 的意思也是 英文 interactive 人机交互的意思。
接下来就是要指定一个我们要进入那个容器 (容器名字)
然后进入容器内部以后,我们要用什么样的命令跟机器进行交互。一般情况下,我们就会用bash进行交互
我们指定为 /bin/bash
当然还有其他的交互方式,后期白眉大叔整理一下,放到这里。
7-删除容器
在删除容器前,需要停止容器
docker stop dashu-nginx
然后再执行删除
docker rm dashu-nginx
以上就是 关于docker 镜像和容器常用的几个命令。 如果有问题,可以下论留言。
三、 docker cp (传输文件)命令
平时我们想要宿主机与容器之间传输文件怎么办?
docker cp 源地址 目标地址
(1)比如,我们想要把宿主机的一个a 文件放到 容器内(dashu-nginx)
docker cp /etc/passwd dashu-nginx:/tmp
(2) 容器内的文件复制到 宿主机上
docker cp dashu-nginx:/etc/hosts /tmp
这里只要知道, 容器内的地址,需要 容器名称:/路径 , 这就可以来,简单吧。
如果是复制文件夹的命令也是一样的:
docker cp /var/log/nginx dashu-nginx:/tmp
四、docker 数据卷
volume干什么的?做目录映射(简单理解)
使用方法:
- -v 数据卷:容器内目录
绑定方式3种:
1- docker 自动在外部创建文件挂载容器内部指定的文件夹内容 (dockerfile volume 指令的做用)
2- 自己在外部创建文件夹,手动挂载
3- 可以把数据挂载内存中(很少用) 不讲了。
- –mount 挂载linux 宿主机,手动挂载(我们不用,了解即可)
- -v 可以自动挂载。
- -v 宿主机:容器中的目录
这个相当于: 容器中目录的内容 全部放到 宿主机目录中。
容器里边的变化了什么了,宿主机对应的目录中也会相应的变化。
或者说, 宿主机中目录变化了什么, 容器中的目录也随着变化。
我们来演示一下。
1-docker 部署mysql
docker run -d \ --name mysql \ -p 13306:3306 \ -e TZ=Asia/Shanghai \ -e MYSQL_ROOT_PASSWORD=123 \ mysql
挂载配置文件示例:
假设有一个Nginx容器需要使用特定的配置文件nginx.conf,可以通过挂载配置文件的方式实现:
docker run -d --name my-nginx -v /path/to/nginx.conf:/etc/nginx/nginx.conf nginx
这样,Nginx容器将使用主机上的nginx.conf作为配置文件。
挂载卷示例:
假设需要将MySQL数据库容器中的数据持久化存储到主机上的/data/mysql目录,可以通过挂载卷的方式实现:
docker run -d --name my-mysql -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password mysql
这样,MySQL容器的数据将持久化存储在主机的/data/mysql目录中。
五、 其他参数
–restart=always –gpus all
1-ro
是 容器内不能修改文件,只能在主机上个修改。
什么都不加就是 默认, 默认是rw 可读可写。
补充:
1、 容器7种状态
created(已创建) restarting(重启中) running(运行中) removing(迁移中) paused(暂停) exited(停止) dead(死亡)
我们平时 用docker ps -a 可以查看 容器的状态
第二部分 --docker命令进阶
这部分是不经常用到的命令
一、 镜像相关
1 批量删除无用镜像
清理所有悬挂(即无标签)镜像,这些通常是构建过程中留下的
docker image prune
加上 -a 参数,可以删除所有未被容器引用的镜像:
2-清理特定时间前的镜像
当我们需要清理一定时间之前的镜像时,可以使用过滤器:
docker image prune -a --filter “until=168h”
3-按照大小排序
有时候,我们想优先删除体积较大的镜像来快速释放空间:
docker images --format ‘{{.Size}}\t{{.Repository}}:{{.Tag}}' | sort -hr
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。