docker常用命令

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值