【Docker】基本命令使用介绍

# 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目录挂载的总结](http://www.linuxidc.com/Linux/2015-09/123519.htm)

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

列出几点关键点:

- 容器目录不可以为相对路径
- 宿主机目录如果不存在,则会自动生成
- 宿主机的目录如果为相对路径,会在/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

原文地址:https://www.cnblogs.com/puyangsky/p/5136233.html