• Docker 的点点滴滴


    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

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

    容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

    Docker 的架构:

    原文转转来自:https://blog.csdn.net/S_gy_Zetrov/article/details/78161154 

    一.镜像(Image)

    镜像是静态的、可以被用户互相分享的文件。我们玩过双系统和虚拟机的人都知道,首先你需要一个.iso镜像,才能安装系统。Docker中的镜像也是这个东西,镜像是静态的,你不能对他操作,只能pull别人的镜像或者push自己的镜像。

    二.容器(Container)

    镜像是静态不可操作的,只能被分享和下载,那什么是能被操作的呢?就是容器里!容器可以理解为镜像的动态状态,也就是我们虚拟机中系统装好后的状态,其实这么说是不对的,容器最符合的描述应该是Linux的iso文件的Live CD模式,比如我们玩双系统时都进入过Live CD模式,不安装系统而直接进入系统,很神奇是吧,Docker的容器就是这个概念,只不过更加轻量更加迅速便捷。但是Live CD的害处就是你关机后作出的修改安装的软件全部gg,容器也是一样,一旦被直接推出,之前安装的gcc啊vim啊啥的就会全部gg掉。如果要保存修改,就需要将当前容器封装成一个新的镜像,这样下次启动这个新的镜像后之前作出的修改还都在。

    三.仓库(Repository)

    Docker中的仓库很像git的代码仓库,你可以pull自己之前push到自己仓库的镜像到本地,也可以pull别人push到公共仓库的镜像到自己本地。你还可以下载(pull)别人分享的镜像到自己的本地,别人也可以下载(pull)你的镜像,因为Docker仓库都是公共的。当然,每个免费用户有一个名额把自己的一个镜像设为私有,也就是禁止被分享给别人

    安装docker

    使用命令:

    sudo apt install docker.io

    查看docker的版本

    docker -v

    获取镜像

    sudo docker search ubuntu

    pull 拉去到本地,默认是latest版本 (:lastes)=tag

    sudo docker pull ubuntu

    查看本地镜像

    sudo docker images

    运行本地镜像

    -it 表示运行在交互模式

    sudo docker run -it ubuntu
    root@8f0fb5bd974f:/#

    此处已经是root用户状态,

    运行的镜像就是我们本地的容器,在本地容器环境中安装软件

    apt install vim

    提示:

    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    E: Unable to locate package vim

    因为当前系统是精简镜像,所以必须先apt update一次才可以。

    apt update
    .....
    apt install vim

    退出容器

    使用 exit命令

    exit

    保存容器环境

    exit退出容器后,在运行镜像发现,vim 或安装的软件不存在,已经还原了,因为退出容器的时候没有保存环境,要保存容器,就要把容器转换为镜像。使用commit 命令

    先获取容器ID

    sudo docker ps -a

     其实,在docker run 之后就可以看到container的id了

    执行commit命令

    -m指定说明信息

    -a指定用户信息

    a50efd41c14d容器的id

    my_repo:vvim指定目标镜像的用户名、仓库名和 tag 信息

    sudo docker commit -m "ubuntu with vim " -a "dxb8888" a50efd41c14d my_repo:vvim

    删除镜像、容器

    sudo docker rm container_id  # 删除容器
    sudo docker rmi image_id    # 删除镜像

    删除镜像的时候必须要删除属于镜像下的容器,否则回报错误:Error response from daemon: conflict: unable to remove repository reference "ubuntu" (must force) - container 718c03f5fd16 is using its referenced image 94e814e2efa8 

    如果删除镜像提示 Error: No such image: my_repo,表示tag不唯一,   就要带上镜像的tag

    sudo docker rmi image_id:tag

    将本地镜像保存到hub

    1:注册hub https://hub.docker.com

    2:终端登陆hub账户

    docker login

    输入用户名与密码

    3:使用tag命令将本地镜像添加到新的标签(与hub上新建的仓库一样)

    sudo docker tag my_repo:vvim dxb8888/ubuntu_env:vvim

    此时,本地有了另外一个镜像 dxb8888/ubuntu_env

    4:将镜像push到hub

    sudo docker push dxb8888/ubuntu_env:vvim

  • 相关阅读:
    map集合方法。
    正则表达式提取器。
    jmeter使用多台linux进行分布式压测。
    如何配置SSHKey
    为什么要做接口测试?
    npm install -g @angular/cli@latest 失败
    关于Newtonsoft.Json,LINQ to JSON的一个小demo
    mysql循环插入数据、生成随机数及CONCAT函数
    WebApi HTTP Put 405 Method not allowed
    npm install 失败
  • 原文地址:https://www.cnblogs.com/dcb3688/p/4610654.html
Copyright © 2020-2023  润新知