我们大体可以分为, 镜像命令,和容器命令 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干什么的?做目录映射(简单理解)
使用方法:
绑定方式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 可读可写。