zoukankan      html  css  js  c++  java
  • docker 容器部署

    docker 介绍

    # 1 docker概念:
    	-版本(17.x以上,都是新版本),docker ce 和docker ee
    	-轻量级,环境问题(开发一套环境,运维一套环境)
      -镜像和容器:镜像是一系列文件:redis镜像(linux系统+redis软件)  容器:当成操作系统
      -隔离:容器里部署我的项目
      -宿主机:运行docker软件的机器
      -c/s架构:通过resful交互
      
    # 2 镜像操作
    	-搜索镜像:docker search 镜像名字 
      -下载镜像:docker pull 镜像名字:tag   # 如果不跟,默认下载最新的(******)
      -查看本地镜像:docker images   #(****)
      -删除本地镜像:docker rmi 镜像id/镜像名字
      	docker rmi 4453 778 333 
        
    # 3 容器操作
    	-docker ps  # 查看正在运行的容器
      -docker ps -a # 查看所有容器(运行和停止)
      -状态:创建,运行,停止,暂停
      -启动和停止:dokcer stop 容器id/容器名字   
      -docker start 容器id/容器名字
      
    

    1 容器操作

    # 1 容器创建
    # 创建一个容器,执行的第一条命令是/bin/bash    没有运行
    docker create -it --name=mycentos1 centos:7 /bin/bash
    # 如果后面跟的命令是一个能夯住的命令,容器在启动的时候,会一直运行,否则,容器一启动就停止
    ps -a :
    /bin/bash:
    
    -i:表示运行容器
    -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
    --name :为创建的容器命名。
    -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
    
    
    -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
    -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
    # 2 容器运行
    docker start 容器id/容器名字
    # 3 创建并运行
    docker run -di --name=mypython  python:3.6 # 创建并运行(后台运行)
      
    docker run -idt --name=mypython  python:3.6 # 创建并运行(前台运行,相当于在容器内部)
    docker run -it --name=mypython  python:3.6  
    -在容器内部,  python  -t相当于:/bin/bash
    
    # 5 进入容器内部操作
    # 在容器上执行ps -a
    docker exec 85768eb78045 ps -a
    docker exec -it 85768eb78045 /bin/bash  # 当做进入到容器
    # Python容器
    docker exec -it 11f702f88de6 python
    
    # 以后,进入容器(相当于)
    docker exec -it 11f702f88de6 /bin/bash
    
    # attach:连到第一个进程上
    docker attach 11f702f88de6
    
    # ssh连接(容器安装ssh服务)
    
    # 4 容器删除
    docker rm 容器id/容器名字
    
    
    
    ##### 总结:
    docker run:创建并运行         
    docker exec:容器执行命令(通常用来:进入容器) docker exec -it 容器id/容器名字 /bin/bash
    
    
    # 5 文件拷贝
    # 从宿主机copy文件到容器
    docker cp 1.txt centos7:/home  # 把当前路径下的1.txt拷贝到容器的/home
    # 从容器copy文件到宿主机
    docker cp centos7:/home/1.txt 1.txt  # 把容器home路径下的1.txt拷贝到当前路径下
    

    2 网络和数据卷

    # 1 目录挂载(数据卷) 把宿主机的目录映射到容器  宿主机test文件夹映射到容器内部
    docker run -di --name=mycentos -v /root/test:/home centos:7
    # 2 端口映射(网络)
    docker run -di --name=myredis -p 6378:6379 redis
      
    # 都可以跟多个
    
    # 查看容器信息
    
    docker inspect 容器名称(容器ID) 
    docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql
    

    3 应用部署

    # docker中部署服务(redis,mysql,nginx)
    # 安装mysql
    # 1 拉一个镜像
    docker pull mysql:5.7
    # 2 运行起容器来
    docker run -di --name=mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
    

    4 备份迁移

    # 容器保存为镜像
    #            容器名字   镜像名字
    docker commit centos7 my_image_centos7
    # 把镜像打包成一个压缩文件
    #把my_image_centos7镜像压缩到centos_my.tar中
    docker  save -o centos_my.tar my_image_centos7
    # 把压缩文件恢复成镜像
    docker load -i centos_my.tar
    

    5 dockerfile

    # Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像
    # 文件文件名必须叫 Dockerfile
    
    FROM python:3.6
    MAINTAINER lqz
    RUN pip install django==1.11.9  -i https://pypi.doubanio.com/simple
    RUN mkdir /home/lqz
    
    WORKDIR /home
    
    docker build -t='django_img' .   # 构建出django_img 镜像
    
    

    6 私有仓库

    # 公司自己的镜像,放到私有仓库(公司内部,张三,李四,都可以使用私有仓库的镜像)
    # 私有仓库本质就是一个web项目(linux+registry(用其他语言写的一个web服务))
    
    # 1 docker pull registry   拉取registry镜像
    # 2 docker run -di --name=registry -p 5000:5000 registry  运行容器
    # 3 浏览器访问:http://175.24.103.108:5000/v2/_catalog  返回空
    #修改daemon.json
    
    vi /etc/docker/daemon.json
    
    "insecure-registries":["175.24.103.108:5000"]
      
    # 4 重启docker 服务(所有容器都是停止状态)
    systemctl restart docker
    
    # 5 启动registry容器
    docker start registry
    
    # 6 标记镜像
    docker tag django_img 175.24.103.108:5000/django_img
    
    # 7 上传镜像(私有仓库)
    docker push 175.24.103.108:5000/django_img
      
    #8  再从浏览器访问http://175.24.103.108:5000/v2/_catalog
    能看到刚刚上传的镜像
    
    # 以后只要同时配置了daemon.json,再拉取镜像,优先从私有仓库拉,没有在去国外
  • 相关阅读:
    LALR(1)语法分析生成器--xbytes
    <<摩托车修理技术与禅>>读书笔记
    xscript脚本
    CentOS安装Erlang
    TCP中close和shutdown之间的区别
    Erlang高阶函数
    深度学习小记
    mac平台打造犀利的Android Studio开发环境
    MAC中如何配置两套android-sdk环境
    Ubuntu虚拟机编译Android6.0总结
  • 原文地址:https://www.cnblogs.com/wangguanyi/p/13208972.html
Copyright © 2011-2022 走看看