保姆级Docker常用操作大全且详细,小抄式复习计划

6 篇文章 0 订阅
4 篇文章 0 订阅

Docker常用指令大全及其详解整理

原创文章!一点一点慢慢整理了两个多小时!

设置开机启动:systemctl enable docker

启动docker:systemctl start docker

查看版本:docker version

查看详细信息:docker info

镜像操作

查看本地镜像:docker images

搜索镜像:docker search [name] #name为你想拉取镜像的名字,如nginx,centos

搜索镜像并过滤是官方的: docker search --filter “is-official=true” [name]

搜索镜像并过滤大于多少颗星星的:docker search --filter stars=10 [name]

下载centos7镜像:docker pull centos:7 #不指定版本:7则为默认最新版本:latest

修改本地镜像名字(小写):docker tag [本地镜像名称] [想改的名称]

本地镜像的删除:docker rmi centos:7

阿里云镜像加速

配置步骤:vi /etc/docker/daemon.json

添加

{
"registry-mirrors": ["https://5xok66d4.mirror.aliyuncs.com"]
}

!!!注意,每个人的https://5xok66d4.mirror.aliyuncs.com不一样,进入https://cr.console.aliyun.com/cn-shenzhen/instances/mirrors **查看

重启:systemctl daemon-reload && systemctl restart docker

容器操作

构建容器:docker run -itd --name=mycentos centos:7 #注意版本号的指定

-i :表示以交互模式运行容器(让容器的标准输入保持打开)

-d:表示后台运行容器,并返回容器ID

-t:为容器重新分配一个伪输入终端

–name:为容器指定名称

-p:端口映射 -p 80:8080

-v:容器挂载,把容器内文件挂载到宿主机文件上,方便排查错误

查看本地所有的容器:docker ps -a

查看本地正在运行的容器:docker ps

停止容器:docker stop CONTAINER_ID / CONTAINER_NAME

一次性停止所有容器:docker stop $(docker ps -a -q)

启动容器:docker start CONTAINER_ID / CONTAINER_NAME

重启容器:docker restart CONTAINER_ID / CONTAINER_NAME

删除容器:docker rm CONTAINER_ID / CONTAINER_NAME

强制删除容器:docker rmi -f CONTAINER_ID / CONTAINER_NAME

查看容器详细信息:docker inspect CONTAINER_ID / CONTAINER_NAME

进入容器:docker exec -it 0ad5d7b2c3a4 /bin/bash

容器的文件复制与挂载

从宿主机复制到容器:docker cp 宿主机本地路径 容器名字/ID:容器路径 docker cp /root/123.txt mycentos:/home/

从容器复制到宿主机:docker cp 容器名字/ID:容器路径 宿主机本地路径 docker cp mycentos:/home/456.txt /root

宿主机文件夹挂载到容器里:docker run -itd -v 宿主机路径:容器路径 镜像ID docker run -itd -v /root/xdclass/:/home centos:7

自定义镜像

  • 基于Docker Commit制作镜像

    docker commit 4eb9d14ebb18[原镜像id] mycentos:7[new名称]

    docker commit -a “XD” -m “mkdir /home/xdclass” 4eb9d14ebb18 mcentos:7

    -a:标注作者

    -m:说明注释

    查看详细信息:docker inspect [container]

  • 基于dockerfile制作镜像(主流的制作镜像方式)

    • Dockerfile 指令

      FROM 基于哪个镜像

      MAINTAINER 注明作者

      COPY 复制文件进入镜像(只能用相对路径,不能用绝对路径)

      ADD 复制文件进入镜像(假如文件是.tar.gz文件会解压)

      WORKDIR: 指定工作目录,假如路径不存在会创建路径

      ENV 设置环境变量

      EXPOSE 暴露容器端口

      RUN 在构建镜像的时候执行,作用于镜像层面

      ENTRYPOINT 在容器启动的时候执行,作用于容器层;dockerfile里有多条时只允许执行最后一条

      CMD 在容器启动的时候执行,作用于容器层;dockerfile里有多条时只允许执行最后一条;容器启动后执行默认的命令或者参数,允许被修改

      • 命令格式:
      • shell命令格式:RUN yum install -y net-tools
      • exec命令格式:RUN [ “yum”,“install” ,"-y" ,“net-tools”]

    构建:docker build -t mycentos:v2 . (注意最后一个小点,.表示当前路径下,即在dockfile文件所在文件夹下进行操作)

    • 实例(对照上面语句进行复习)

      # this is a dockerfile
      FROM centos:7
      MAINTAINER XD 123456@qq.com
      RUN echo "正在构建镜像!!!"
      WORKDIR /home/njuptwly
      COPY 123.txt /home/wlynjuptwly
      RUN yum install -y net-tools
      
      FROM centos:7
      ADD jdk-8u211-linux-x64.tar.gz /usr/local
      RUN mv /usr/local/jdk1.8.0_211 /usr/local/jdk
      ENV JAVA_HOME=/usr/local/jdk
      ENV JRE_HOME=$JAVA_HOME/jre
      ENV CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
      ENV PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
      ADD apache-tomcat-8.5.35.tar.gz /usr/local
      RUN mv /usr/local/apache-tomcat-8.5.35 /usr/local/tomcat
      EXPOSE 8080                                               #暴露端口,允许访问
      ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]    #安装好后进行启动
      

Docker 容器的网络模式

  • bridge:桥接模式,该模式是docker 的默认网络设置,当Docker服务启动时,会在主机上创建一个名为docker0的虚拟网桥,并 选择一个和宿主机不同的IP地址和子网分配给docker0网桥

  • host:主机模式,该模式下容器是不会拥有自己的ip地址,而是使用宿主机的ip地址和端口。

  • none:无网络模式,无法连外网,内部调试用,很少用

    查看网络模式: docker network ls

容器通信

  • 基于link单向通信

    docker run -itd --name tomcat_test --link mysql_test tomcat #启动tomcat应用容器并link到mysql数据库(注意:mysql_test这个容器一定要存在!)

  • brige网桥实现双向通信

    创建一个新的网桥:docker network create -d bridge my_bridge

    启动第一个容器:docker run -itd --name tomcat_test tomcat

    启动第二个容器:docker run -itd --name redis_test reds

    把第一个容器加入网桥:docker network connect my_bridge tomcat_test

    把第二个容器加入网桥:docker network connect my_bridge redis_test

容器的特权模式

启动一个普通的容器 docker run -itd --name mycentos centos:7 /bin/bash

安装网络工具: yum -y install net-tools

执行 route -n

删除网关: route del default gw 172.17.0.1

启动拥有特权模式的容器: docker run -itd --privileged=true --name mycentos1 centos:7 /bin/bash

进入容器: docker exec -it ef /bin/bash

删除网关成功

Volume数据共享

  • dockerfile

    FROM centos:7 
    VOLUME ["/usr/local"] 
    

    注意:在dockerfile里设置volume是无法修改宿主机的挂载路径的

  • 使用volume容器共享创建nginx集群

    • 使用–volumes-from 实现容器与容器之间volume共享
    • 创建nginx1 docker run -itd -p 8080:80 -v /usr/local/nginx/html:/usr/local/nginx/html --name nginx1 mycentos:nginx /usr/local/nginx/sbin/nginx -g “daemon off;” #第一个容器与主机挂载
    • 创建nginx2 docker run -itd -p 8081:80 --volumes-from nginx1 --name nginx2 mycentos:nginx /usr/local/nginx/sbin/nginx -g “daemon off;”
    • 创建nginx3 docker run -itd -p 8082:80 --volumes-from nginx1 --name nginx3 mycentos:nginx /usr/local/nginx/sbin/nginx -g “daemon off;”
    • 对/usr/local/nginx/html/index.html进行修改 打开浏览器进行访问测试
    • 用docker inspect 容器ID 查看详细的挂载信息
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值