1 安装
1.1 docker的安装
1.2 出现错误
2 注册阿里云
2.1 镜像加速器
我的专属加速器地址:https://9vt58t5l.mirror.aliyuncs.com
2.2 配置本机的运行加速器
vim /etc/docker/daemon.json
网易云和百度云可以不注册直接使用
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
3 启动Docker后台容器
测试运行hello-world
docker run hello-world
容器与镜像的关系类似于面向对象程序中的对象与类的关系
以镜像为模板,生成容器为实例
Unable to find image 'hello-world:latest' locally
没有在本地找到hello-world的最新镜像,latest代表最新。
latest: Pulling from library/hello-world
从远程(docker hub 或者阿里云)拉取最新镜像
0e03bdcc26d7: Pull complete
Digest: sha256:31b9c7d48790f0d8c50ab433d9c3b7e17666d6993084c002c2ff1ca09b96391d
Status: Downloaded newer image for hello-world:latest
以该镜像为模板生成容器实例运行
4 docker的框架图
docker_host:主机
images 镜像。
镜像就是模板
container:容器(集装箱)。
镜像的实例就是容器。独立运行的一个或一组应用。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的linux环境(包括root权限、进程空间、用户空间和网络空间)和运行在其中的应用程序。
容器的定义和镜像几乎一模一样。也是一堆成的统一视角,唯一的区别在于容器的最上面一层是可读可写的。
client:命令终端
repository:仓库
仓库repository与仓库注册服务区registry是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中有包含了多个镜像,每个镜像有不同的标签tag(类似于版本号)。
5 docker命令
5.1 帮助命令
5.1.1 docker info
Containers: 1 有多少个容器
Running: 0
Paused: 0
Stopped: 1
Images: 1 多少个镜像
5.1.2 docker --help
查看所有docker的常用命令
5.2 镜像命令
5.2.1 docker images 列出本地主机上的镜像
REPOSITORY 镜像的仓库源
TAG 镜像的标签。同一个仓库源有多个tag,代表这个仓库源不同个版本,我们使用REPOSITORY :TAG来定义不同的镜像
如果你不指定一个镜像的版本标签,例如你只使用ubuntu,docker将默认使用ubantu:latest镜像
IMAGE ID 镜像的id
CREATED 镜像创建时间
SIZE 镜像的大小
1 docker images -a 列出本地所有的镜像。列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层)
镜像是分层嵌套的
2 docker images -q 只显示镜像id
返回id的集合。可以批量删除的时候使用
3 docker images --digests 显示镜像的摘要信息
REPOSITORY TAG DIGEST IMAGE ID只有开头 CREATED SIZE
hello-world latest sha256:31b9c7d48790f0d8c50ab433d9c3b7e17666d6993084c002c2ff1ca09b96391d bf756fb1ae65 12 months ago 13.3kB
4 docker images --no-trunc 显示完整的镜像信息
REPOSITORY TAG IMAGE ID 完整的 CREATED SIZE
hello-world latest sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b 12 months ago 13.3kB
5.2.2 docker search xxx 某个镜像的名字(从docker hub上查找)
相当于去https://hub.docker.com 上查找
STARS ⭐ 相当于点赞数
OFFICIAL 是否是官方版
AUTOMATED 自动构建
5.2.3 docker pull xxx 拉取某个镜像
拉取方式其实每个页面都有 https://hub.docker.com/_/tomcat
等价于 docker pull jelastic/tomcat:latest
tomcat里也有其他镜像。一层层叠加
5.2.4 docker rmi xxx 删除某个镜像 xxx可以是镜像id或者唯一镜像名
docker rmi hello-world 相当于 docker rmi hello-world:latest
因为容器正在使用这个镜像 ,所以删不掉
docker rmi -f
docker rmi -f 镜像名1:tag 镜像名2:tag
例如 docker rmi -f hello-world nginx
删除全部镜像
docker rmi -f $(docker images -qa)
5.3 容器命令
5.3.1 新建并启动容器 docker run -it 300e315adb2f
有镜像才能创建容器,这是根本前提
i 交互
t 伪终端
5.3.2 列出当前所有正在运行的容器 docker ps
docker ps 当前正在运行的
NAMES gifted_galileo 系统随机分配的名字 也可以在run的时候用--name指定
docker run -it --name="mycentos" 300e315adb2f
-a 列出当前正在运行的容器+历史上运行过的容器
-l 显示最近创建的容器
docker ps -l
status :exited 代表已经退出 。up代表正活跃
-n 显示最近n个创建的容器
-q 静默模式,只显示容器编号
5.3.3 退出容器 exit和ctrl+P+Q
退出有两种方式 exit 和 ctrl+P+Q
exit 容器停止退出
ctrl+P+Q 容器不停止退出
在第二行的时候按下ctrl+P+Q
状态还是up
5.3.4 启动容器 docker start xxxx 容器名或容器id
779853915ab2容器已经退出
5.3.5 重启容器 docker restart xxx
重启以后执行时间变了
5.3.6 停止容器 docker stop 容器id或者容器名
5.3.7 强制停止容器 docker kill容器id或者容器名
stop是慢慢熄火停止,相当于正常关机、
5.3.8 删除已停止容器 docker rm 容器id或名字
docker rmi 是删除镜像 没有i是删除容器
如果要删没有停止的容器 加上-f 强制删除
docker rm -f mycentos008
一次性删除多个容器
docker ps -a -q | xargs docker rm
或者
docker rm $(docker ps -a -q)
有个容器正在运行 不能删除,用上-f再执行一次