docker基础篇一

一:介绍

    Docker 是一个开源的应用容器。 可以让开发者打包他们的应用以及依赖包到一个轻量级的,可移植的容器中,然后发布到任何linux机器上,也可以实现虚拟化。

二:使用场景

1》Web 应用的自动化打包和发布。
2》自动化测试和持续集成、发布。
3》在服务型环境中部署和调整数据库或其他的后台应用。
4》从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

三:docker安装

使用官方的二进制包安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
 
 查看版本
 docker version

四:镜像

        1》 查找镜像,拉取镜像
        docker search centos
        docker pull centos
        2》显示镜像
        docker images
    docker inspect centos //镜像详细信息
        3》删除镜像
        docker rmi centos,// 可以指定镜像名称或者镜像ID
        docker rmi `docker images -q`  //删除所有的镜像,注意使用
 
hudandeMacBook-Air:dockerjdk8 hudan$ docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
centos                    latest              0d120b6ccaa8        5 days ago          215MB     
 
说明:
            REPOSITORY, 镜像的仓库
            TAG , 镜像的标签版本号
            IMAGE ID , 镜像ID
            CREATED, 创建时间
            SIZE, 镜像大小

五:容器

        1》容器启动,并进入容器内
        docker run -it --name=mycentos centos /bin/bash
        
        
 
        参数说明:
        -i: 运行容器
        -t: 分配一个伪终端,登录并且进入容器里。
        - - name: 容器名称
        -d: 后台启动的进程
        -v:宿主目录挂载到容器的目录
        -p:宿主的端口号映射到容器的端口号,
        -v,-p 的第一个参数是宿主机,第二个参数是容器内。
 
        退出, exit,  则此时的容器是停止的状态
        2》后台启动容器,也就是一个守护进程
        docker run -di --name=mycentos3 centos
        
        输出一个容器ID,
        那么怎么进入该容器内:
        docker exec -it mycentos3 /bin/bash
        
 
        退出,exit, 则此时的容器还是运行的状态
 
        3》显示所有容器
        docker ps
 
        hudandeMacBook-Air:dockerjdk8 hudan$ docker ps
        CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                 PORTS                                                                        NAMES
        d0bb536e6bcb        centos                    "/bin/bash"              5 minutes ago       Up 5 minutes                                                                                        mycentos3
        d345293d2e22        centos/mysql-57-centos7   "container-entrypoin…"   9 hours ago         Up 9 hours             0.0.0.0:3307->3306/tcp                     mysql1
        
        说明:
                CONTAINER ID: 容器ID
                IMAGE:使用镜像名称
                COMMAND:备注信息
                CREATED:创建时间
                STATUS :启动状态(up,Exited)
                PORTS : 映射端口号
                NAMES: 容器名称
        
        不加参数显示所有的运行容器
        -a : 显示所有的容器(包括运行和停止容器)
        
        4》启动容器和停用容器
         docker start mycentos3 //启动容器
         docker stop mycentos3 //停用容器
        
        5》删除容器
        docker rm mycentos3 //容器名称或容器ID
         docker rm  `docker ps -a -q`  //删除所有的容器,注意使用     

六:文件拷贝

        1》 将宿主机的文件拷贝到容器
        docker cp abc.txt mycentos3:/root
    
        2》将容器的文件拷贝到宿主机
        docker cp mycentos3:/root/abc.txt ./
        

七:docker使用 

1》部署mysql
    a: 拉取mysql
        docker search mysql
        docker pull mysql/mysql-server
    b:启动容器
docker run -di --name=mysql57 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7
 
注意:-p : 3308 是宿主机端口,3306 是容器端口,将宿主机3308端口,映射到容器3306端口。
MYSQL_ROOT_PASSWORD 是设置mysql 的密码,登录容器下,进入mysql不需要密码,终端要连接是需要使用root。
 
2》部署nginx
    a:拉取nginx
        docker search nginx
        docker pull nginx
    b:启动容器
        docker run -di --name=mynginx -p 8089:80 nginx
浏览器访问:
 
注意:-p: 8089 是宿主机端口, 80 是容器端口, 将宿主机8089映射到容器的端口
 
3》部署 redis
    a: 拉取redis
        docker search redis
        docker pull redis
    b:启动容器
    docker run -di --name=myredis -p 6389:6379 redis
    
    
4》以上都是多个容器单个部署,那么有什么方式可以多个容器一起启动么????
        可以, 通过docker-compose, 一次启动多个容器, 配置一个yml文件,
        
        1:安装docker-compose
                a:下载docker-compose 二进制包,并修改其二进制包添加可执行权限
                curl -L https://github.com/docker/compose/releases/download/1.24.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
                chmod +x /usr/local/bin/docker-compose
                     docker-compose -version
                
        2: docker-compose 命令
        
        
        3:docker-compose.yml 文件编辑
version: '3'
services:
  redis1:
    image: redis
    ports:
      - "6379:6379"
    container_name: "redis1"
    networks:
      - dev
  mysql1:
    image: centos/mysql-57-centos7
    environment:
      MYSQL_ROOT_PASSWORD: "root"
    ports:
      - "3306:3306"
    container_name: "mysql1"
    networks:
      - dev
  web1:
    image: tomcat
    ports:
      - "9090:8080"
    container_name: "web1"
    networks:
      - dev
      - pro
networks:
  dev:
    driver: bridge
  pro:
    driver: bridge
 
注意:dev, pro 是当前是在那个网端里。如在同一网端,说明可以相互访问。
 
4:启动容器和停用容器
        docker-compose up -d
        注意:-d :是可以在后台运行
 
可以通过浏览器访问nginx.
 
 
 

八:备份和迁移—保存镜像

        将容器备份成镜像,然后备份,备份的镜像可以恢复和重新使用
        docker commit web2 mynginx // web2 容器, mynginx 新生成的镜像
        docker save -o mynginx.tar mynginx //将镜像备份mynginx.tar
        docker load -I mynginx.tar //将压缩包加载镜像
        

九:docker file — 构建镜像

        docker-compose 是将所有的容器统一启动,备份和迁移是可以一本地容器修改后,拷贝到另一服务器上,
        Dockerfile 是可以构建一个镜像。
 
 
a: vi Dockerfile
 
FROM centos:7
MAINTAINER ITCAST
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u202-linux-x64.tar.gz /usr/local/java/
ENV JAVA_HOME /usr/local/java/jdk1.8.0_202
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
 
b: docker build -t='jdk1.8 .
c: docker images
posted @ 2020-08-17 09:45  wxdr  阅读(130)  评论(0编辑  收藏  举报