docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker常用命令及参数

docker常用命令及参数的用法解读

作者:小凯  ོ

这篇文章主要介绍了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干什么的?做目录映射(简单理解)

使用方法:

绑定方式3种:

1- docker 自动在外部创建文件挂载容器内部指定的文件夹内容 (dockerfile volume 指令的做用)

2- 自己在外部创建文件夹,手动挂载

3- 可以把数据挂载内存中(很少用) 不讲了。

这个相当于: 容器中目录的内容 全部放到 宿主机目录中。

容器里边的变化了什么了,宿主机对应的目录中也会相应的变化。

或者说, 宿主机中目录变化了什么, 容器中的目录也随着变化。

我们来演示一下。

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文