• docker常用命令


    一,镜像管理指令

    案例:


    docker image save nginx:1.11 > nginx1.11.tar #导出镜像为tar包 docker load < nginx1.11.tar #导入镜像 docker ps #查看运行中容器 docker run -itd busybox #运行镜像,就变成一个运行中的容器 docker export 6hidudiiwdudw > bug.tar #导出容器文件系统到tar归档文件 docker image import bug.tar name:tag #导入容器文件系统归档tar文件创建镜像

    二,创建容器常用指令

    案例:

    docker [container]  run -itd --name bs busybox  #用busybox这个镜像创建一个交互式+伪终端+后台运行名字叫做bs的容器; 【】里面这个指令可以省略
    docker  ps #可以查看到映射关系 ,运行中的   加-a 查看所有
    docker [container] attach bs
    #进入容器,类似一个linux系统,正常退出终端后这个容器也同时退出了,如果不想这样就按Ctrl+p+q退出 docker start bs #启动停止了的容器
    docker container run -itd -e a=113 --name bs1  bug  #用bug这个镜像创建一个容器,同时传递一个变量进去
    docker exec -it bs1 sh   #进入容器的另一种方法,这种方法可以直接退出,不会关闭容器
    /#ls
    bin dev etc ....
    /#echo $a    
    123               #变量已经传递进来了
    docker [container] run -itd -p 8080:80 --name nginx01  nginx  #启动容器,并把容器的80端口映射给主机的8080端口
    docker ps  #可以查看到映射关系 ,运行中的   加-a 查看所有
    docker logs nginx01  #查看容器内部日志
    ls  /var/lib/docker/containers/ehduihdbdw(容器ID命名目录)/   #主机上容器日志地址,里面会有个日志,内存大的时候要主要清理
    docker [container] run -itd -p 8080:80 --name nginx02 --restart=always nginx #这个断了后可以自动重启容器

     -p重要扩展

    -p(小写)可以指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器。支持的格式有 hostPort:containerPort、ip:hostPort:containerPort、 ip::containerPort。

    #将本地的 6000 端口映射到容器的 5000 端口;hostPort:containerPort(映射所有接口地址)
    $ sudo docker run -itd -p 6000:5000 --name nginx01 nginx 

    #指定映射使用一个特定地址
    比如 localhost 地址 127.0.0.1;ip:hostPort:containerPort (映射指定地址的指定端口) $ sudo docker run -itd -p 127.0.0.1:5000:5000 --name nginx01 nginx #绑定 localhost 的任意端口到容器的 5000 端口,本地主机会自动分配一个端口;ip::containerPort (映射指定地址的任意端口) $ sudo docker run -itd -p 127.0.0.1::5000 --name nginx01 nginx #还可以使用 udp 标记来指定 udp 端口 $ sudo docker run -itd -p 127.0.0.1:5000:5000/udp --name nginx01 nginx #使用 docker port 来查看当前映射的端口配置,也可以查看到绑定的地址 $ docker port nostalgic_morse 5000 127.0.0.1:49155. #-p 标记可以多次使用来绑定多个端口 $ sudo docker run -itd -p 5000:5000 -p 3000:80 --name nginx01 nginx

     资源限制

    $ docker [container] run -itd --cpus 1 --name nginx04 nginx  #指定容器可以使用的 CPU 个数就可以了,并且还可以指定如 1.5 之类的小数
    $ docker [container] run -itd --memory  512m --name nginx04 nginx  #指定容器内存,并且swap默认是memory的2倍
    $ docker [container] stats nginx04  #查看容器的资源利用率

     DOCKER 给运行中的容器添加映射端口

    方法1
    #获取容器IP
    docker inspect container_name | grep IPAddress
    #iptable转发端口
    iptables -t nat -A  DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000
    方法2
    #提交一个运行中的容器为镜像
    docker commit containerid foo/live
    #运行镜像并添加端口
    docker run -d -p 8000:80 foo/live /bin/bash

    三,管理容器常用指令

    $ docker [container] ls  
    $ docker [container] inspect 容器ID  #查看容器的详细信息
    $ docker [container] attach nginx03  #用这种方式进入容器会卡死,
    $ docker [container] top nginx03   #查看这个容器里面运行的进程,发现前端有个进程占用阻塞了
    $ docker [container] exec -it nginx03  bash #可以用伪终端的方式进入容器
    $ docker [container] commit bs1 busybox:v2 #bs1是有个运行中的容器,这个命令会提交一个叫做busbox,tag为v2的镜像
    $ docker [container] exec bs1 ls /root  #bs1是个运行中的容器,查看这个容器root目录详情
    $ docker [container] cp index.html bs1:/root  #拷贝文件到bs1容器中,
    $ docker cp  96f7f14e99ab:/www /tmp/  #将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中
    $ docker port  nginx01 #查看端口映射关系
    $ docker stats  nginx01 #查看容器实时资源的利用率情况
    $ docker update --help  #实时修改容器的资源限制,具体命令看help
    $docker ps -q -a   #列出所有容器ID
    $ docker rm -f  $(docker ps -q -a)  #技巧,删除所有容器

    四,管理应用程序数据

    volume

    $ docker volume ls   #查看数据卷
    $ docker volume create  nginx-vol   #创建数据卷
    $ docker volume inspect nginx-vol   #查看数据卷详情
    
    #用卷创建一个容器
    $docker run -itd --name=nginx-test --mount src=nginx-vol,dst=/usr/share/nginx/html nginx   # --mount src= 指定数据卷,dst 挂载的容器目录,如果没指定卷会自动创建
    $docker run -itd --name=nginx-test -v nginx-vol:/usr/share/nginx/html nginx   # 这种写法更简洁,推荐
    
    $docker exec -it nginx-test bash      
    ...  cd /usr/share/nginx/html     #容器的目录
    ...  ls
    50x.html   index.html
    退出
    cd   /var/lib/docker/volumes/nginx-vol/_data/    #进入宿主机的数据券目录中
    ...  ls
    50x.html  index.html         #在这里是同步的,2边增删改查都是一样的,类似软链接
    
    #清理
    docker [container] stop nginx-test
    docker [container] rm nginx-test
    docker volume rm  nginx-vol

     bind

    #用bind卷创建一个容器
    $docker run -itd --name=nginx-test --mount type=bind,src=/app/wwwroot,dst=/usr/share/nginx/html nginx   
    # 绑定卷,如果宿主机的/app/wwwroot不存在就会报错,挂载的时候如果/usr/share/nginx/html 里面有文件,则现有内容会隐藏
    
    $docker run -itd --name=nginx-test -v /app/wwwroot:/usr/share/nginx/html nginx   # 这种写法更简洁,推荐
    
    $docker inspect nginx-test  #验证绑定
     
    #清理
    $docker container stop nginx-test
    $docker container rm nginx-test

    作者:陈耿聪 —— 夕狱

    出处:https://www.cnblogs.com/CGCong/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    [GAMES101]计算机图形学 Assignment 作业1 透视投影 解析手记
    [GAMES101]计算机图形学 Assignment 0
    [算法竞赛入门经典] 象棋 ACM/ICPC Fuzhou 2011, UVa1589 较详细注释
    最长上升子序列
    Qt快速入门第三版PDF
    [C++]UVaLive7324 ASCII Addtion
    [算法竞赛入门经典]Message Decoding,ACM/ICPC World Finals 1991,UVa213
    由数据查询慢来浅谈下oracle中的like和instr函数的模糊查询效率问题
    swift学习资料 + 教程
    weblogic DataSource 配置注意事项
  • 原文地址:https://www.cnblogs.com/CGCong/p/12162153.html
Copyright © 2020-2023  润新知