zoukankan      html  css  js  c++  java
  • Docker常用命令

    1、docker安装
    wget -P /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repo
    yum list docker-ce --showduplicates | sort -r #查看可以安装的版本
    yum install -y docker-ce-18.03.1.ce-1.el7.centos #或使用yum install -y docker-ce命令安装,不推荐
    启动docker服务
    systemctl start docker.service

    2、docker镜像操作常用命令
    登陆到本地docker仓库
    docker login -u[user] -p[password] localhost:8080
    登出
    docker logout localhost:8080
    打包系统(--exclude:排除指定目录,两条命令二选一,注意第二条命令后面有个点)
    tar -cvpf /tmp/centos6-base.tar --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot /
    tar -cvpf /tmp/system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot .
    导入打包好的系统到docker镜像(注意docker镜像名不能有大写字母)
    cat centos6-base.tar | docker import - centos6-base
    docker import centos6-base.tar centos6-base
    启动导入的docker镜像,-d表示放到后台运行,--net指定网络类型(bridge|host|none|container:NAME/ID|user_defined_network)
    docker run -p 80:80 -p 443:443 -p 2022:22 --hostname CentOS6 --net=bridge -it -d centos6-base /bin/bash
    提交一个运行中的容器为镜像(-p :在commit时,将容器暂停)
    docker commit -p [CONTAINER ID] [REPOSITORY[:TAG]]
    导出镜像到本地
    docker save -o /root/centos610_ssh.tar centos:6.10_ssh
    导入本地镜像
    docker load </root/centos610_ssh.tar
    运行镜像添加端口映射和修改网络模式(--name:指定容器名称)
    docker run -p 8080:80 --hostname=test --net=bridge --name=[NAMES] -it -d [REPOSITORY[:TAG]] /bin/bash
    查看docker镜像
    docker images
    删除docker镜像
    docker image rm -f centos6-base
    docker rmi centos:6.10_ssh
    搜索docker镜像
    docker search centos7
    下载docker镜像
    docker pull ansible/centos7-ansible
    检查网络配置
    docker network inspect bridge

    3、docker容器操作常用命令
    运行一个容器(-d:后台运行容器;--privileges:使container内的root拥有真正的root权限)
    docker container run -d --privileged -it [镜像名称] /sbin/init
    启动一个退出状态中的docker容器
    docker container start [CONTAINER ID]
    停止一个运行中的docker容器
    docker container stop [CONTAINER ID]
    进入启动好的docker容器
    docker exec -it [CONTAINER ID] bash
    强制删除运行中的docker容器
    docker container rm -f [CONTAINER ID]
    查看运行中的docker容器
    docker ps
    查看所有docker容器
    docker ps -a
    修改容器名称
    docker container rename [NAMES] [NEW_NAMES]
    容器默认配置文件目录(489a4ec81e86前十二位为容器container id)
    cd /var/lib/docker/containers/489a4ec81e869cade7fb1bd887f51f72727606ea2602292f98e10fd2fb80985b/

    4、运行中的docker容器增加端口映射
    iptables -A DOCKER ! -i docker0 -o docker0 -p tcp -s 0.0.0.0/0 -d 172.17.0.2 --dport 65510 -j ACCEPT
    iptables -t nat -A DOCKER ! -i docker0 -p tcp --dport 65510-j DNAT --to-destination 172.17.0.2:65510
    iptables -t nat -A POSTROUTING -p tcp --dport 65510 -j MASQUERADE
    iptables -nvL
    iptables -t nat -nvL
    查看container端口映射(使用iptables开启的端口映射无法查看)
    docker container port [CONTAINER] 80/tcp
    docker port [CONTAINER] 80/tcp

    5、docker的五种网络模式
    --net=bridge|host|none|container:container_id/container_name|user_defined_network   #指定容器网络模式;
    --net=bridge   #默认模式。为容器创建独立的网络命名空间,分配网卡、IP地址等网络配置,并通过veth接口对,将容器挂载到一个虚拟网桥(默认为docker0)上,类似于VMware的NAT模式;
    --net=host    #不为容器创建独立的网络命名空间,容器内看到的网络配置(网卡信息、路由表、Iptables规则等)均与主机上保持一致。注意其他资源还是与主机隔离的,类似于VMware的桥接模式;
    --net=none    #为容器创建独立的网络命名空间,但不进行网络配置,即容器内没有创建网卡、IP地址等;
    --net=container:container_id/container_name    #新创建的容器共享指定的已存在容器的网络命名空间,两个容器内的网络配置共享,但其他资源(进程空间、文件系统等)还是相互隔离的;
    --net=user_defined_network    #用户自行用network相关命令创建一个网络,同一个网络内的容器彼此可见,可以采用更多类型的网络插件。

    6、修改容器配置文件
    docker container stop fb7c338a6c93
    systemctl stop docker.service
    cd /var/lib/docker/containers/fb7c338a6c934359aff9936e32ebb69bf46dd7f64e1e7892a7340367850e7e0b
    vim hostconfig.json
    vim config.v2.json
    systemctl start docker.service
    docker ps -a
    docker container start fb7c338a6c93
    注意:
           修改容器配置文件前必需先停容器再停docker服务再修改容器配置文件,更改端口映射和网络模式,hostconfig.json文件和config.v2.json文件都需要修改。启动docker服务后使用docker ps -a命令查看不到修改完配置文件的容器时,请检查配置文件是否修改正确

    7、创建容器启动脚本
    [root@test /]# vim /bin/start.sh   #进入容器里创建start.sh脚本

    #!/bin/bash
    
    /etc/init.d/sshd start
    /bin/bash    #保留一个终端,防止容器自动退出

    [root@test /]# chmod +x /bin/start.sh

    参考链接:
          https://docs.docker.com/reference/
          https://www.cnblogs.com/fps2tao/p/10557257.html   #修改运行中的docker容器的端口映射
          https://www.cnblogs.com/kingsonfu/p/11578073.html   #docker容器添加对外映射端口
          https://blog.csdn.net/weixin_42498981/article/details/112110445   #docker常用命令
          https://www.cnblogs.com/maohai-kdg/p/13474024.html    #docker安装
          https://hub.docker.com/_/centos?tab=tags&page=2&ordering=last_updated  #CentOS docker镜像

  • 相关阅读:
    VSCode Web Developement for Javascript. Must have plugins.
    Docker explainations
    如何在启用SharePoint浏览器功能的InfoPath 表单中添加托管代码以动态地加载并显示图片
    解决方案:带格式化文本控件( RichText)的模板如果在InfoPath的浏览器中加载可能出现 COM 组件的80040154错误
    springboot之本地缓存(guava与caffeine)
    java基础之泛型对象与json互转
    nginx动静分离
    网关鉴权后下游统一filter获取用户信息
    网关高可用之keepavlived全流程(安装/配置/验证/解析)
    微服务时代之网关及注册中心高可用架构设计
  • 原文地址:https://www.cnblogs.com/xwupiaomiao/p/14813865.html
Copyright © 2011-2022 走看看