简单理解,docker就像是一个集装箱,将凌乱的的货物标准化托管,集装箱和集装箱之间互不影响。也就是说我们可以将不同应用程序打包到一个docker容器中。然后这个容器就很容易运送到其他机器上运行,而且很容易装载、复制、移除。
首先,docker容器秒级启动,比传统虚拟机方式快很多
其次,docker对系统资源利用率很高,一台主机上可以同时运行数千个docker容器。也能更轻松的迁移可扩展。
镜像是一个特殊的文件系统。
操作系统分为内核和用户空间。对linux而言,内核启动后,会挂载root文件系统为其提供用户空间支持。而docker镜像,就相当于一个root文件系统。它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时的库、环境变量和配置文件等),这个打包好的运行环境就是镜像。
docker是分层存储的架构,构建镜像时会一层一层构建,前一层是后一层的基础。每一层构建完就不会在发生改变,后一层上有任何改变朱会发生在自己这一层。比如,删除前一层文件,实际并不是真的删除前一层文件,而是仅在当前层标记为该文件已删除
容器是镜像运行的实体
容器的实质是进程,但与直接在宿主机的进程不同,容器进程运行于属于直接的独立命名空间,容器也是分层存储
容器存储的生命周期和容器一样,容器消亡时,容器存储层也随之消亡。可以使用数据卷,数据卷的生命周期独立于容器,容器消亡,数据卷不会消亡。
集中存放镜像文件的地方
镜像构建完成后,很容易在当前宿主机上运行,但是如果在其他服务器上使用这个镜像,我们就需要一个集中存储,分发镜像的服务,docker registry 就是这样的服务
一个docker registry中可以包含多个仓库,每个仓库可以包含多个标签,每个标签对呀一个镜像。
#安装依赖
yum install yum-utils device-mapper-persistent-data lvm2 -y
#增加docker源
yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i '[email protected]@mirrors.tuna.tsinghua.edu.cn/docker-ce@g' /etc/yum.repos.d/docker-ce.repo
sed -i 's/$releasever/8/g' /etc/yum.repos.d/docker-ce.repo
sed -i 's/$basearch/x86_64/g' /etc/yum.repos.d/docker-ce.repo
centos8默认使用podman代替docker,所以需要containerd.io
yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm
yum install -y --allowerasing docker-ce
在阿里云上获取镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://2htouzcd.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
搜索官方仓库镜像
docker search ...
拉取镜像
docker pull ...
给镜像打标记
docker tag nginx:1.14-alpine nginx:v1
查看镜像
docker image ls
docker image
导出镜像
docker image save ... -o或者> 路径
删除镜像
docker image rm ...
导入镜像
docker image load -i ...
查看镜像详细信息
docker image inspect ...
启动容器
docker run [options]
options常用命令选项
-t 打开一个终端
-i 交互式访问
--name 容器名字
--network 指定网络
--rm 容器一停止,自动删除
-d 后台运行
-p 端口映射;大写P随机映射,小写p指定映射
查看容器状态
1.docker ps
-a 查看所有
-qa 获取所有容器的id
2. docker container ls
启动,停止,删除,杀死容器
docker start ...
docker stop ...
docker rm ... 删除停止的容器
docker rm -f ...删除运行的容器
docker kill ...
查看容器详细信息
docker inspect ...
对运行的容器执行指定命令exec
docker exec [options] ...
options选项
-d 后台运行
-e 设置环境变量
-i 交互式
-t 打开一个终端
-u 用户名或uid
docker和宿主机之间互相拷贝
docker cp web1:/usr/share/nginx/html/index.html . 将web1容器中的index.html拷贝到当前
docker cp test.html web1:/usr/share/nginx 将宿主机中的test.html拷贝到web1指定路径中
导入导出容器
docker export -o test.tar web1
将web1容器导出test.tar
docker import test.tar -- nginx:web2
镜像 标签