Docker 是一个开源的应用容器引擎,基于 Go 语言 并听从Apache2.0协议开源。git
Docker 可让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,而后发布到任何流行的 Linux 机器上,也能够实现虚拟化。docker
容器是彻底使用沙箱机制,相互之间不会有任何接口(相似 iPhone 的 app),更重要的是容器性能开销极低。ubuntu
Docker 的架构:vim
原文转转来自:https://blog.csdn.net/S_gy_Zetrov/article/details/78161154 架构
镜像是静态的、能够被用户互相分享的文件。咱们玩过双系统和虚拟机的人都知道,首先你须要一个.iso镜像,才能安装系统。Docker中的镜像也是这个东西,镜像是静态的,你不能对他操做,只能pull别人的镜像或者push本身的镜像。app
镜像是静态不可操做的,只能被分享和下载,那什么是能被操做的呢?就是容器里!容器能够理解为镜像的动态状态,也就是咱们虚拟机中系统装好后的状态,其实这么说是不对的,容器最符合的描述应该是Linux的iso文件的Live CD模式,好比咱们玩双系统时都进入过Live CD模式,不安装系统而直接进入系统,很神奇是吧,Docker的容器就是这个概念,只不过更加轻量更加迅速便捷。可是Live CD的害处就是你关机后做出的修改安装的软件所有gg,容器也是同样,一旦被直接推出,以前安装的gcc啊vim啊啥的就会所有gg掉。若是要保存修改,就须要将当前容器封装成一个新的镜像,这样下次启动这个新的镜像后以前做出的修改还都在。性能
Docker中的仓库很像git的代码仓库,你能够pull本身以前push到本身仓库的镜像到本地,也能够pull别人push到公共仓库的镜像到本身本地。你还能够下载(pull)别人分享的镜像到本身的本地,别人也能够下载(pull)你的镜像,由于Docker仓库都是公共的。固然,每一个免费用户有一个名额把本身的一个镜像设为私有,也就是禁止被分享给别人ui
使用命令:spa
sudo apt install docker.io
查看docker的版本.net
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
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