docker命令行学习

时间:2021-03-28 17:42:10

docker命令行学习

docker run

  • docker run --help:老实说这条最管用了
  • docker run -it:交互模式,允许控制台输出
  • docker run -d:detach,以后台进程的形式运行,可以与-it同时生效
  • docker run --name "your docker name":指定名称,可以在后续操作替代id
  • docker run -v {host path}:{docker path}:挂载磁盘,下面详细说
  • docker run --rm: Automatically remove the container when it exits,结束后自动删除docker,省去了docker rm的操作
  • docker run -p {host port}:{docker port}:指定端口映射关系,冒号前是宿主机的端口,冒号后是容器的端口
  • docker run --restart {mode}:支持重启的容器,三种模式:no/on-failure/always,看名字就知道是干嘛的了

docker run -v

重点学习一下docker run -v这个磁盘挂载操作:

参考: 关于Docker目录挂载的总结

挂载磁盘的目的是将宿主机的目录挂载到容器中,这样可以达到宿主机和容器共享一个目录,从而更方便的共享数据。
值得注意的是,当在宿主机或容器中修改了目录内的内容或是目录的权限,相应的映射目录也会进行改变,但是如果是容器被删除,宿主机内的目录并不会被删除,但是反之则会。

列出几点关键点:

  • 容器目录不可以为相对路径
  • 宿主机目录如果不存在,则会自动生成
  • 宿主机的目录如果为相对路径,会在/var/lib/docker/volumes/下创建目录
  • 如果只是-v指定一个目录,随机生成的一个目录名
  • 挂载宿主机已存在目录后,在容器内对其进行操作,报“Permission denied”

docker logs

  • docker logs {docker_id/docker_name} :查看日志(控制台输出)
  • docker logs -f {docker_id/docker_name} :类似tail -f 实时查看输出

docker exec

  • docker exec -it {docker_id/name} /bin/bash:进入后台运行的容器的交互模式

docker build

  • docker build -t {tag_name} {Dockerfile dir}:根据目录下的Dockerfile文件构建一个镜像,-t指定其名称和tag