docker run中的常见参数
以mysql安装为例子
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql
-d 表示后台执行
–name 容器的名字
-p 宿主机和容器映射的端口
-e 环境变量的设置 此处设置了时区和密码
最下方的mysql
指此镜像名字(官方名字)
一般此处的镜像名称结构是 Repository:TAG
镜像名+版本号
若像此处没有写上版本号 就默认是安装最新版本镜像的容器
docker操作镜像常见命令
- docker pull 将镜像从远端拉取到本地
- docker push 与拉取对应的 将镜像从本地推送到远端
远端指的是dockerHub
-
docker images 查看所有的镜像
-
docker ps 查看所有的容器及其状态
-
docker build 构建自己的镜像 通过Dockerfile
-
docker save 保存镜像为本地文件
-
docker load 加载本地镜像
-
docker rmi 移除镜像
-
docker run 运行镜像 创建容器 如果本地找不到对应的镜像文件 会到远端去找
-
docker logs 查看docker日志
-
docker exec 运行docker容器
-
docker stop 停止(暂停)运行中的镜像
-
docker start 重新运行构建容器
docker支持类似断点续传的功能 当构建容器的过程中意外暂停了传输 可以通过
docker start
重新运行起这个过程 并可以通过docker ps
来查看容器的安装状态
补充:
docker ps --format "table {{ID}\t{{.Image}r\t{{.Ports}}\t{{.Status}]\t{{.Names}}"
在查看容器状态的时候 自定义容器的格式
数据卷相关
docker容器具有多个特点,是一个在最大程度上最小化依赖和相关组件的单位。这一特点使docker更加的轻量化,提高操作的效率。但同时也带来了某些不便,因为在开发中,我们通常需要修改对应容器的配置。例如修改mysql的端口,在通常情况下,我们需要通过vim等编辑器进入配置文件的内部进行手动修改。但是在docker包装的linux环境中,由于最小化依赖的要求,我们通常不能通过vi进入文件内部编辑。
试使用docker exec
+ vi
[root@localhost ~]# docker exec -it nginx bash
root@6f6dd1f6932d:/# cd /usr/share/nginx/html
root@6f6dd1f6932d:/usr/share/nginx/html# ls
50x.html index.html
root@6f6dd1f6932d:/usr/share/nginx/html# vi index.html
bash: vi: command not found
所以为了解决日常开发中的这一类需求 docker引出了数据卷挂载的概念。顾名思义,就是在宿主机的建立对应的目录及文件,映射到容器当中去
宿主机和nginx中的对应目录是双向绑定的,当在宿主机的映射文件中做修改时,会同步到容器当中去。相反,在容器内部进行修改的时候,也会同步到宿主机的文件系统中去。
了解概念之后,学习如何操作数据卷
指令 | 作用 |
---|---|
docker volume create | 创建数据卷 |
docker volume ls | 查看所有数据卷 |
docker volume rm | 删除指定数据卷 |
docker volume inspect | 查看某个数据卷 |
docker volume prune | 清除数据卷 |
以下以nginx创建容器时手动挂载为例
nginx中存放静态资源的目录是/usr/share/nginx/html
确认挂载目录的写法是否正确
在执行docker run命令时,使用-v 本地目录
:容器内目录可以完成本地目录挂载
本地目录必须以“”或"/"开头,如果直接以名称开头,会被识别为数据卷而非本地目录
-v mysql:var/ib/mysql
会被识别为一个数据卷叫mysql docker会默认存放到宿主机中数据卷的目录 如上nginx中的/var/lib/docker/volumes/html/_data
-v./mysql:Nar/Iib/mysql
会被识别为当前目录下的mysql目录
- 创建容器并确定挂载的目录及其名字
[root@localhost ~]# docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html
c25c429f3e8ed1470bc27df6ffcdb41d224bfb19087ec66624e24d1c6f8c323d
创建容器并返回容器的id 可使用docker ps观察容器状态
- 查看数据卷
[root@localhost ~]# docker volume ls
DRIVER VOLUME NAME
local html
- 查看挂载的数据卷的详情
[root@localhost ~]# docker volume inspect html
[
{
"CreatedAt": "2024-02-25T17:00:17+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/html/_data",
"Name": "html",
"Options": null,
"Scope": "local"
}
]
MountPoint
则是对应宿主机中的目录路径
可以在宿主机cd到对应的目录中
[root@localhost ~]# cd /var/lib/docker/volumes/html/_data
[root@localhost _data]# ls
50x.html index.html
发现经典两文件 这时候可以通过宿主机上的编辑器对映射文件进行修改,或者是新增静态资源。操作完毕之后可以再次通过docker exec
进入容器内部,会发现挂载目录下资源或文件已经修改完成