• Docker基本操作


    Docker

    Docker是一个开源项目,最初是dotCloud公司内部的一个业余项目,是google公司推出的go语言的项目。目前代码在github上面维护。其实Docker就是一个虚拟机,就是将计算机虚拟化,和VM有很多的共同之处,但是也有很多的差别,直接使用宿主机的资源,不分资源区块。如果没有服务器,可以去https://labs.play-with-docker.com这个网站上去操作练习。

    Docker的优点

    实现轻量级的操作系统虚拟化,Docker的基础是Linux容器(LXC)等技术

    启动速度快,占用体积小,一个centos7的系统,只需要几十个m的文件,并不需要完整的系统镜像,但是要基于服务器原本的操作系统。在操作系统之上通过lxc技术,实现虚拟化出操作系统。

    要注意docker 是一个软件,通过这个软件虚拟化出操作系统

    重点

    解决了项目部署和软件版本的统一问题

    Docker通信

    docker 客户端跟服务端通信,是通过http协议,resful规范

    镜像和容器

    比喻

    镜像是类,然后容器是对象,一个类可以声明多个对象

    基于镜像运行容器

    详细说明

    一台服务器,首先要安装docker软件,我们要虚拟化的操作系统,需要在注册中心下载,这个就是我们需要的镜像,如果我们把镜像运行起来,这个就是容器,我们的程序就是运行在容器上面的。

    Docker安装

    centos

    最好选择7.x以上的版本

    1.更新yum
    sudo yum update
    
    2.安装需要的软件包
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
    3.设置yum源为阿里云
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    4.安装docker
    #docker-ce社区版,docker-ee企业版
    sudo yum install docker-ce
    #is this ok?
    yes
    
    5.查看是否安装完成
    #docker软件安装完成,服务端和客户端都安装完成,
    docker -v #查看客户端版本,服务端并没有启动
    

    Docker基本操作

    运行

    # 7.x用这个命令启动
    systemctl start docker
    
    #停止docker服务端
    systemctl stop docker 
    
    重启docker:
    systemctl restart docker
    
    查看docker状态:
    systemctl status docker
    
    开机启动:
    systemctl enable docker
    
    查看docker概要信息
    docker info
    
    查看docker帮助文档
    docker --help
    

    镜像

    更换镜像源为ustc的镜像

    ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker
    mirror的优势之一就是不需要注册,是真正的公共服务。
    https://lug.ustc.edu.cn/wiki/mirrors/help/docker

    编辑该文件:
    vi /etc/docker/daemon.json 
    在该文件中输入如下内容:
    {
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
    }
    

    先启动服务端

    # 会去https://hub.docker.com/查找
    # 直接去该地址查找即可
    docker search centos
    
    #安装命令在tag直接复制
    docker pull centos:centos7
    
    #查看所有服务器的镜像
    docker images
    docker images -q只显示id号
    
    #删除镜像
    #容器没有删除,镜像删除不掉
    docker rmi id号   id号可以缩写
    

    容器

    一个镜像可以跑多个容器每一个容器就是一个操作系统

    #查看容器
    docker ps:查看正在运行的容器
    docker ps –a:查看所有容器(包括停止和运行的)
    
    #创建启动容器,并且进入容器
    docker run -it --name=mycentos centos:centos7 /bin/bash
    #退出容器,容器也就停止了
    exit  
    
    #不进入容器 内部(常用)
    docker run -di --name=mycentos centos:centos7     
    #进入到容器内容
    docker exec -it mycentos  /bin/bash    
    #退出,容器不停止
    exit
    
    
    docker stop id号或者名字    容器停止
    
    docker start id号或者名字   启动容器
    

    端口映射

    #宿主机和容器端口映射(外部宿主机的端口不能冲突)
    docker run -it --name=mycentos -p 80:80 -v 宿主机目录:容器目录 centos:7 /bin/bash     
    一旦退出容器,容器也就停止了
    

    文件拷贝

    #从宿主机拷贝文件到容器内部
    docker cp 1.txt mycentos2:/home   
    
    #从容器往外拷贝,不需要进入容器内部
    docker cp mycentos2:/home/1.txt /home/1.txt  
    

    目录挂载

    #前面的是宿主机的目录,后面是容器的目录
    #容器删掉之后,目录还在,类似容器使用宿主机的共享文件夹
    docker run -di -v /home/zx:/home --name=mycentos3 centos:centos7
    
    #如果映射三个路径,应该怎么写?-v 路径:路径 -v 路径:路径 -v 路径:路径
    

    容器详细信息

    #查看容器详情:
    docker inspect 容器名字/id    
    NetworkSettings下的IPAddress是容器的ip地址
    
    查看容器ip   
    docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
    

    服务部署

    mysql

    拉取:docker pull mysql:5.6
    
    #设置了root密码,同时启动了服务,还做了端口映射
    启动:docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
    
    远程连接宿主机的3306端口,即可连接到容器的mysql服务
    

    redis

    #不加tag ,拉最新的版本,也就是lasted版本
    docker  pull reids     
    
    #启动redis
    docker run -di --name=myredis -p 6379:6379 redis  
    

    迁移备份(容器转镜像)

    #docker commit 容器名字 要打包成的镜像名字
    docker commit mycentos zx
    
    #基于打包好的镜像,再跑起容器来,那么容器内部原来装的软件,都会有
    docker run -di --name=lqz_centos7_1 lqz_centos7:latest
    

    镜像备份(打包)

    用于服务器的迁移,从一台机器到另一台机器,就只需要将压缩包拿走

    docker  save -o zx.tar zx
    

    镜像恢复

    docker load -i zx.tar
    

    私有仓库

    私有仓库的功能就是存放自己的镜像,实际上就是一个web应用,首先去自己的私有仓库下载镜像,再去网上找镜像

    启动

    #拉私有仓库镜像
    docker pull registry   
    
    #启动镜像形成容器
    docker run -di --name=registry -p 5000:5000 registry   
    
    #打开宿主机浏览器 输入地址http://101.133.225.166:5000/v2/_catalog    
    #没有上传镜像,是空的 {"repositories":[]}
    

    配置

    vi /etc/docker/daemon.json
    #插入
    {"insecure-registries":["101.133.225.166:5000"]} 
    
    #重启docker 服务
    systemctl restart docker
    
    #重启registry的容器
    docker restart registry
    

    上传

    #打标签
    docker tag zx
    
    #上传标记的镜像
    docker push zx
    
    本地删除镜像后,可以从私有仓库拉下来
    docker pull zx
    

    参考链接

    https://www.cnblogs.com/xiaoyuanqujing/articles/11840212.html

  • 相关阅读:
    无休止的项目,何来快感!!
    [From HTTP to AWS][4]使用LibcURL with OpenSSL support
    [From HTTP to AWS][2]Analyze TCP/IP Packets
    The setup of Piaoger
    从Adobe Subscription editions扯到破坏性创新
    SaaS窘境[欣赏然后翻译之]
    Algodoo,很棒的物理引擎
    浮水法POJ2528
    蛤的旅行
    题解 CF712A 【Memory and Crow】
  • 原文地址:https://www.cnblogs.com/zx125/p/12715745.html
Copyright © 2020-2023  润新知