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 的点点滴滴

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

Docker 的点点滴滴

执行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

Docker 的点点滴滴

Docker 的点点滴滴

上一篇:git相关整理


下一篇:Android数据库相关整理