我们大体可以分为, 镜像命令,和容器命令 2个大部分。

一、镜像命令

1- 拉取镜像

2- 推送镜像

docker push baimeidashu/centos79:v1

因为涉及到 登录仓库的的知识,这个push 命令会在这篇文章中详细介绍

3-查看所有镜像

docker images

4-删除镜像

比如: 删除nginx 镜像

docker rmi [镜像id或者名称]

以上是对镜像操作的相关命令

二、 容器命令

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) 最后跟上镜像的名称:版本

2- 查看运行的容器

docker ps

补充:容器7种状态

docker ps -a
-a 表示所有都显示,并且会显示状态

created(已创建)
restarting(重启中)
running(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)

3- 停止容器

docker stop [容器id或者名称]

4- 启动容器

docker start [容器id或者名称]

5- 查看容器日志(docker日志命令)

docker  logs [容器id或者名称]

不过在工作中常用的是要加一个参数 -f

意思是 follow ,时刻跟随

docker logs dashu-nginx -f

我们不想用了可以用 ctrl + c 来结束

6- 进入容器 (exec)

docker exec -it dashu-nginx  /bin/bash

解释: exec 是英文executive 执行程序的缩写。

-it 的意思也是 英文 interactive 人机交互的意思。

接下来就是要指定一个我们要进入那个容器 (容器名字)

然后进入容器内部以后,我们要用什么样的命令跟机器进行交互。一般情况下,我们就会用bash进行交互

我们指定为 /bin/bash

7-删除容器

在删除容器前,需要停止容器

然后再执行删除

docker  rm [容器id或者名称]

以上就是 关于docker 镜像和容器常用的几个命令。 如果有问题,可以下论留言。

平时我们想要宿主机与容器之间传输文件怎么办?

(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干什么的?做目录映射(简单理解)

命令

说明

docker volume create

创建数据卷

docker volume ls

查看所有数据卷

docker rm

删除指定的数据卷

docker volume inspect

查看某个数据卷的详情

docker volume prune

清除数据卷

使用方法:

绑定方式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 可读可写。

偷得浮生半日闲,心情半佛半神仙。