zoukankan      html  css  js  c++  java
  • Docker的安装与使用介绍

    docker是什么?

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
    容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

    为什么要用docker?

    在没有用docker之前,我们需要在本地,测试,线上部署相同的环境,相同的软件每个环境都要安装一次,并且每来一个新同事,相同的环境有要重新安装一遍,很麻烦且过于重复。docker可以完美的解决这个问题
    用docker之后我们只需要在本地,测试,线上分别安装相同的docker,然后在本地搭建环境,将搭建好的环境容器生成docker镜像,只要将这个docker镜像提供给测试和线上即可构建出相同的环境,在代码部署上我们可以利用docker数据卷将本地项目目录文件直接挂载到测试环境中

    docker在win7上的安装

    我们在官网上看到docker不能在win7上直接安装,需要通过docker toolbox来安装

    Requires Microsoft Windows 10 Professional or Enterprise 64-bit. For previous versions get Docker Toolbox.

    so,根据官网的介绍我们可以在这里https://docs.docker.com/toolbox/overview/直接点击Get Docker Toolbox for Windows
    按钮直接下载,如果下载慢的话可以在https://get.daocloud.io/toolbox/下载,我选择DockerToolbox-18.09.1.exe 这个版本。下载完后可直接双击安装
    安装的过程中需要选择安装哪些组件,这里由于我本机已经安装了git和virtual box,所以就不选了,没安装的建议全选

    安装完后桌面上多出docker和kitematic两个快捷方式

    双击Docker Quickstart Terminal,由于我们没有一起安装git,因此弹出需要我们指定用哪个bash.exe,这里我们选择本机安装的Git/bin/bash.exe文件,等一段时间后安装完成,出现如下界面

    执行docker-machine ssh default即可登录上镜像
    这里docker启用默认的镜像,ip为192.168.99.100,我们可以通过xshell登陆上此服务器
    default镜像默认的用户名是docker密码是tcuser
    至此docker在win7上安装完成,

    docker在win7上的优化

    虚拟机的默认存储位置是C:UsersAdministrator.dockermachinemachines ,后期docke镜像文件会不断增加,为了给系统盘减负,最好将磁盘移动到其他位置。

    1. 在终端中执行docker-machine stop default命令停止default虚拟机
    2. 通过VirtualBox【管理】->【虚拟介质管理】界面对虚拟磁盘进行复制

    更改镜像仓库地址

    docker默认的镜像仓库地址是https://hub.docker.com/,但国内的下载速度太过缓慢,最好使用国内镜像,
    参考http://guide.daocloud.io/dcs/daocloud-9153151.html#docker-toolbox设置镜像加速

    docker在mac上的安装

    在docker官网上我们可以直接下载Docker Desktop (Mac) 可直接在https://hub.docker.com/editions/community/docker-ce-desktop-mac下载(需要登录),下载后双击执行docker.dmg正常安装即可
    启动docker后在系统菜单栏我们可以看到docker标志,说明docker安装成功

    docker镜像加速

    参考http://guide.daocloud.io/dcs/daocloud-9153151.html#docker-toolbox设置镜像加速

    docker基本命令

    // 列出本地已有镜像
    docker images
    // 从远端下载镜像
    docker pull <image name>
    // 使用镜像创建并启动一个容器(若本地没有该镜像,则会先从远端下载,每次run都会生成一个容器,嗯,轻量~)
    docker run hub.c.163.com/library/hello-world:latest
    //列出正在运行的容器
    docker ps
    // 列出所有容器(包括Exited)
    docker ps -a
    // 启动指定的容器
    docker start <container id>
    // 停止指定的容器
    docker stop <container id>
    // 停止所有运行中的容器
    docker stop $(docker ps -q)
    // 删除指定容器
    docker rm <container id>
    //删除所有容器
    docker rm $(docker ps -aq)
    //停止并删除容器
    docker stop $(docker ps -q) & docker rm $(docker ps -aq)
    // 删除指定镜像(删除镜像前须先停止并删除容器)
    docker rmi <image id>
    // 重启容器
    docker restart <container id>
    // 创建一个新的容器并运行一个命令
    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
    -d: 后台运行容器,并返回容器ID;
    -i: 以交互模式运行容器,通常与 -t 同时使用;
    -p: 端口映射,格式为:主机(宿主)端口:容器端口
    -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    --name="nginx-lb": 为容器指定一个名称;
    --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
    --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
    -h "mars": 指定容器的hostname;
    -e username="ritchie": 设置环境变量;
    --env-file=[]: 从指定文件读入环境变量;
    --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
    -m :设置容器使用内存最大值;
    --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
    --link=[]: 添加链接到另一个容器;
    --expose=[]: 开放一个端口或一组端口;
    
    // 交互运行
    docker run -it centos /bin/bash   
    /bin/bash 是进入到linux中命令行
    // 进入容器
    docker exec -it centos /bin/bash
    // 容器拷贝到主机
    docker cp <container id>:文件路径 主机目标路径
    // 主机拷贝到容器
    docker cp 主机文件路径 <container id>:文件路径
    //查看容器IP
    docker inspect -f '{{.NetworkSettings.IPAddress}}' centos
    

    win7上文件以数据卷的形式挂载到docker容器中

    1.先设置 win7 到 VirtualBox 中 docker 用的那个虚拟机的共享文件夹
     填写好共享文件夹路径和名称。如:共享文件夹路径:E: 共享文件夹名称: e
     然后勾选自动挂载和固定分配
    2.重启 docker
    3. docker run -it -v /test:/var/www myimage /bin/bash

    制作镜像

    在上面的镜像容器中我们可以搭建自己所需要的各种环境,搭建好后可将这个更改后的容器打包成一个镜像,并上传到镜像仓库供大家使用
    在搭建好环境的容器中退出时我们应当使用ctrl+p+q快捷键,而不是exit退出,因为这样直接退出会关闭当前容器
    docker commit :从容器创建一个新的镜像。
    docker commit -a "name" -m "this is profile" <container id> imageName
    这里以阿里云为例,将镜像推送到Registry

    $ sudo docker login --username=jesse131 registry.cn-shenzhen.aliyuncs.com
    $ sudo docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/mirror-study/study:[镜像版本号]
    $ sudo docker push registry.cn-shenzhen.aliyuncs.com/mirror-study/study:[镜像版本号]
    

    从网上拉取上传的镜像

    $ sudo docker pull registry.cn-shenzhen.aliyuncs.com/mirror-study/study:[镜像版本号]
    

    如果不想通过网络拉去镜像也可以通过U盘拷贝镜像

    导出镜像到本地

    docker save <container id> -o d:/www/centos.tar

    加载本地镜像

    docker load -i d:/www/centos.tar

  • 相关阅读:
    变量在原型链中的查找顺序
    new 运算符干了什么
    一道关于变量升级问题的题目
    【c#.Net】c#.Net基础入门(数组和循环)
    【C#.Net】c#.Net基础入门(运算符和分支结构)
    【Python】【Django】查询所有学生信息
    【Python】【Django】admin后台管理类操作数据库
    【Python】【Django】用户注册功能
    【Python】【Django】PythonWeb框架基本知识
    【转】【接口测试】接口测试与postman
  • 原文地址:https://www.cnblogs.com/jesse131/p/10281438.html
Copyright © 2011-2022 走看看