Docker入门学习

  1. Docker 是一个容器技术的代表,容器的技术本质上讲是程序打包、隔离。docker在微服务领域、云计算领域有个广泛的应用。

  2. 可以粗糙的人为docker是一个轻量级的虚拟机,它们都是将应用放在相对独立的环境里,调度主机的内核来运行。docker没有虚拟层,它会比虚拟机轻量的多,程序运行速度也非常快。

  3. Docker 是一个为开发者和运维者去开发、发布和在容器中运行应用的平台。使用Linux容器来部署应用程序被称为容器化。 容器不是新的概念,它的优势在于很容易发布一个应用。

  4. 安装docker

    1. 添加yum源

      # yum install epel-release –y
      # yum clean all
      # yum list
      
    2. 安装并运行Docker

      # yum install docker-io –y
      # systemctl start docker
      
    3. 查看安装结果

      # docker info
      
    4. docker守护进程管理

      # systemctl start docker     #运行Docker守护进程
      # systemctl stop docker      #停止Docker守护进程
      # systemctl restart docker   #重启Docker守护进程
      
  5. Docker的优点:

    1. 灵活: 即使最复杂的应用也能够被容器化
    2. 轻量: 容器最大化利用和分享主机的内核
    3. 可互换: 可以即时部署更新和升级应用
    4. 便捷: 可以在本地构建应用,并部署到容器云,并在任何地方运行
    5. 可扩展: 可以增加和自动分发容器的个数
    6. 可堆叠: 可以垂直堆叠服务并即时堆叠服务
  6. 基本概念

    1. 镜像: Docker images 镜像是一个可执行程序包,其中包含运行应用程序所需的所有内容 - 代码,运行时库,环境变量和配置文件。容器运行时的只读模板,操作系统+软件运行环境+用户程序,类似于java中的class。
    2. 容器:Docker containers,容器是通过一个镜像来启动,容器包含了某个应用运行所需要的全部环境,类似于java中的对象。容器是一个镜像的运行时实例,容器是一个在内存中运行的镜像。
  7. 常用命令

    1. 查看docker版本信息: docker -v

    2. 查看docker运行状态: sudo service docker status

    3. 搜索镜像: docker search rabbitmq:management

    4. 列出当前系统已安装的镜像: docker images

    5. 删除镜像: docker rmi -f 镜像id

    6. 拉取镜像: docker pull rabbitmq:management(先从本地获取,没有的话去远程镜像仓库拉取)

    7. 运行一个容器: docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:management

      1. -d 后台运行
      2. -p 端口映射
      3. –name “容器名称”
      4. rabbitmq:management (格式 REPOSITORY:TAG),如果不指定tag,默认使用最新的
    8. 创建容器–交互式容器(创建运行的时候会进到容器里面):

      docker run -it --name=容器名称  镜像名称  /bin/bash
      
    9. 创建容器–守护式容器():

      docker run -di --name=容器名称  镜像名称
      
    10. 将文件从宿主机拷贝到容器中

    docker  cp  111.txt  myredis2:/usr/local
    
    1. 将文件从容器中拷贝到宿主机:

      docker cp myredis2:/etc/111.txt  /data
      
    2. 进入守护式容器的命令

      docker exec -it myredis2 /bin/bash
      
    3. 退出容器: exit

    4. 查看当前运行的容器: docker ps

    5. 查看所有的容器: docker ps -a

    6. 查看容器内部信息: docker inspect 9187fe1853f9(id或者name)

    7. 停止某个容器: docker stop 容器名称

    8. 启动某个容器: docker start 容器名称

    9. 移除某个容器: docker rm 容器名称(容器必须是停止状态)

  8. docker部署Nginx

    1. 拉取镜像: docker pull nginx

    2. 运行容器:

       docker run -d  --name "nginx" -p 8088:80  nginx
      
  9. docker安装mysql

    1. 拉取镜像: docker pull centos/mysql-57-centos7

    2. 运行容器:

      docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7
      
  10. docker安装redis

  11. 拉取镜像: docker pull redis

  12. 运行容器:

    docker run -di --name=redis  -p 6379:6379  redis --requirepass "123456"
    
  13. 在docker中使用redis

    docker exec -it bf9b9d256da5 redis-cli
    
  14. docker安装tomcat

    1. 拉取镜像: docker pull tomcat:7-jre7

    2. 运行容器

      docker run -di --name=tomcat -p 8080:8080 tomcat:7-jre7
      
    3. 将war包复制到tomcat容器webapps下:

      docker cp 111.war tomcat:/usr/local/tomcat/webapps
      
  15. docker安装rabbitmq

    1. 拉取镜像: docker pull rabbitmq:management

    2. 运行容器:

      docker run -d --name="rabbitmq" -p 5672:5672 -p 15672:15672 rabbitmq:management
      
  16. 私有镜像仓库:用于存放公司内部的镜像,不提供给外部使用

  17. 私有镜像仓库的搭建:

  18. 私有镜像仓库使用

    1. 登录私有镜像仓库

      docker login --username=康世伟的云主机 registry.cn-hangzhou.aliyuncs.com
      
    2. 标记镜像,设置本地镜像tag,将本地映像与注册库中的存储库相关联的命令是username / repository:tag。 该标签是可选的,但建议使用,因为它是注册管理机构用于为Docker镜像提供版本的机制

      docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/swkang/swkang:[镜像版本号]
      docker tag df6f26ea3e53  registry.cn-hangzhou.aliyuncs.com/swkang/swkang:swkang_rabbitmq
      
    3. 推送本地镜像到私有镜像仓库

      docker push registry.cn-hangzhou.aliyuncs.com/swkang/swkang:swkang_rabbitmq
      
    4. 从私有镜像仓库中拉取镜像

      docker pull registry.cn-hangzhou.aliyuncs.com/swkang/swkang:swkang_rabbitmq
      
  19. springboot项目构建docker镜像

    1. 在项目的pom.xml添加如下的配置

      <properties>
      	<docker.image.prefix>swkang</docker.image.prefix>
      </properties>
      
      <build>
      	<finalName>springboot-docker-demo</finalName>
      	<plugins>
      		<plugin>
               	<groupId>com.spotify</groupId>
                  <artifactId>dockerfile-maven-plugin</artifactId>
                  <version>1.3.6</version>
                  <configuration>
                      <repository>${docker.image.prefix}/${project.artifactId}</repository>
                      <buildArgs>
                          <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                      </buildArgs>
                  </configuration>
          	</plugin>
          </plugins>
      </build>
      
    2. 在项目的根目录下面创建Dockerfile.txt文件

      FROM openjdk:8-jdk-alpine
      VOLUME /tmp
      ARG JAR_FILE
      COPY ${JAR_FILE} app.jar
      ENTRYPOINT ["java","-jar","/app.jar"]
      
      1. FROM : 需要一个基础镜像,可以是公共的或者是私有的, 后续构建会基于此镜像,如果同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令

      2. VOLUME 配置一个具有持久化功能的目录,主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录

      3. ARG 设置编译镜像时加入的参数, ENV 是设置容器的环境变量

      4. COPY : 只支持将本地文件复制到容器 ,还有个ADD更强大但复杂点

      5. ENTRYPOINT 容器启动时执行的命令

      6. EXPOSE 8080 暴露镜像端口

    3. 构建镜像

      1. mvn install dockerfile:build(此处如果是windows电脑,需要安装docker for windows,并且在settings

        ->general 下面勾选 Expose deamon on tcp://localhost:2375 without TLS,否则不能构建成功)

      2. 跳过测试: mvn install -Dmaven.test.skip= dockerfile:build

    4. 将本地镜像推送到远程镜像仓库

    5. 从远程镜像仓库拉取推送的镜像到目标服务器,并运行该镜像,返回的容器id

    6. 通过上面的容器id,查看容器的日志

      docker logs -f faece63109ec4852bd25e14daba9eb66a73fb84f12bd3d36aa32a85ed783c072
      
  20. 模拟登陆

    curl "http://asdasd.com"
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值