docker run
挂载数据卷Volumes
# 若目录不存在会自动创建docker run -it -v /宿主机绝对路径:/容器内路径[:ro|:rw] 镜像名ro模式下容器不能进行写操作,而不仅仅是不能持久化数据
假如挂载卷后出现没有权限的情况,可以在docker run时添加 —privileged=true 参数。
启动前台程序
docker run -d --name mycentos3 centos /bin/sh -c "while true;do echo hello;sleep 2;done"
docker logs
docker logs —tail 5 输出最后5行日志
docker logs -t 输出日志时间戳
docker commit
# docker commit -a="作者" -m="描述信息" 容器ID 源镜像名:tagdocker commit -a="gw" -m="config" 9061dc8cfdb9 docker.io/mysql:gwdocker run -it docker.io/mysql:gw
docker run
docker run -p hostport:containerport
dockerfile

- ADD 将宿主机的目录下的文件拷贝进镜像且自动处理URL和解压tar包
- COPY 类似ADD,拷贝文件和目录到镜像中
- CMD 指定一个容器启动时要运行的命令,Dockerfile中可以有多个CMD命令,但只有最后一个生效,CMD会被docker run之后的参数替换
- ENTRYPOINT 和CMD一样,都是指定容器启动程序及参数
docker run -it -v /mydata1 -v /mydata2 centos /bin/bash
以上命令可以用如下Dockerfile生成
FROM centosVOLUME ["/mydata1","/mydata2"]CMD echo "Success!"CMD /bin/bash
生成镜像
docker build -f Dockerfile -t gw/centos .
关于镜像层;
Dockerfile中的指令被一条一条的执行。每一步都创建了一个新的容器,在容器中执行指令提交修改。当所有的指令都执行完毕之后,返回最终的镜像ID。所有的中间步骤所产生的容器都被删除和清理了。
一个镜像不能超过127层。
docker attach 和 docker exec的区别:
- attach 直接进入容器启动命令的终端,不会启动新的进程,可以利用Ctrl+P+Q来退出
- exec 是在容器中打开新的终端,并且可以启动新的进程
