docker常用命令
docker pull nginx
docker pull nginx:latest
docker run -d -p 81:80 nginx
-d 隐藏窗口启动
-p 端口映射,外部81端口映射到容器启动的内部端口80
docker logs -t -f --tail 5 +容器ID
docker ps
ps 查看容器进程
docker start +ID/name 启容器
docker restart +ID/name 重启容器
docker stop +ID/name 慢慢停止
docker kill +ID/name 强制停止
docker rm +ID/name 删除容器(-f 没关闭的强制删除,rmi是容器镜像)
docker images
查看容器镜像
进入容器修改镜像
docker exec -it 9222 /bin/bash
9222 nginx 镜像的ID
it交互、伪终端
exit 关闭容器并退出
看上一个:docker ps -l
看上5个:docker ps -n 5
ctrl+P+Q 不关闭容器并退出
提交镜像到本地,作为本地镜像mm2
docker commit -m="提交信息" -a="作者" 9222 mmm2
docker images
可以看到多了一个mm2的镜像
启动下 docker run -d -p 90:80 mm2
进入下 docker exec -it 镜像ID /bin/bash
Dockerfile 编写镜像处理命令,简单执行即可
FROM nginx
# 基于nginx基础镜像
ADD ./ /usr/share/nginx/html
添加当前文件下所有文件到 目的目录
构建镜像文件mmm2
. 表示当前文件路径
-t 默认当前文件下的dockerfile文件
docker build -t mmm2 .
-f 表示指定路径文件下的dockerfile文件
docker build -f /usr/DcokerFile2 mm2 .
save和load tar文件
docker save mmm2 >m2.tar
删除镜像+名称
docker rmi mmm2
加 -f 强制删除 docker rmi -f mmm2
删除多个:
docker rmi -f 镜像名1:tag 镜像名2:tar
docker rmi -f ${docker images -q}
docker load < m2.tar
常用
docker run -d -p 外部端口:内部端口 --name newnginx nginx:1.13
容器数据卷(类似redis的RAD/AOF数据持久化)
容器之间共享数据
关闭容器时,数据持久化到主句硬盘
1、命令
docker run -it -v /宿主机绝对目录:/容器绝对目录 镜像名
-v 卷的意思
首先都没有目录文件
docker run -it centos /bin/bash
主机执行
docker run -it -v /myLocalData:/dataContainer centos
都生成了目录文件
查看是否挂载成功:
1、目录生成--ok
2、docker inspect +ID容器 返回json,看到--ok
之间数据共享
容器停了,主机数据能不能同步到容器?
再次docker start ID(原来的id) 完全全量同步
加权限
docker run -it -v /宿主机绝对目录:/容器绝对目录:ro centos
:ro只读权限 目录相同会覆盖之前的,为空
容器只能同步读取
2、DOckerFile
JavaEE test.java --->test.class
docker image ----> dockerfile
父子容器之间磁盘挂载 doc01/doc02/doc03
1.启动doc01容器,docker ps 看到doc01容器
docker run -it --name doc01 zzyy/centos
2.启动doc02容器,继承父容器挂载点
docker run -it -name doc02 --volumes-from doc01 zzyy/centos
3.启动doc03容器,继承父容器挂载点
docker run -it -name doc03 --volumes-from doc01 zzyy/centos
现在doc02、doc03继承doc01
1.数据父到子,子到父,新增修改已经共享
删除容器doc01,进入容器:docker attach doc02
doc02和doc03之间数据继续共享
结论:容器之间配置的信息传递,数据卷的生命周期一直持续到没有容器使用他为止。
隐藏启动并挂载到主机,多个挂载
docker run -d -p 8090:8080 --name mytest -v opt/logs:/usr/tomcat/logs -v opt/files:usr/tomcat/files --privleged=true mytestcentos