镜像和容器

- 镜像是一种轻量级,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件

- 它包含运行某个软件所需的所有内容,包括代码、库、环境变量和配置文件

- 镜像是只读的,将镜像启动起来,生成的实例就是容器,容器是可读可写的

- 在容器中一个新的可写层被加载到镜像顶部,这一层我们叫容器层,容器层下是镜像层

- 将容器提交就能获得一个新的镜像,包含了我们操作的可写层和原始镜像。

获取镜像方式

- 1、拷贝
- 2、自己制作
- 3、远程仓库下载
| official标识的都是官方镜像

- 拉取镜像的真谛:
| docker.io/library/mysql:latest          // 这个是镜像的真实地址
| docker pull mysql == docker pull docker.io/library/mysql:latest

 

生成镜像

docker commit                           // 提交容器成为一个新副本
docker commit -m="提交的表述信息" -a="作者" 容器id 目标镜像名:tag

- 1.启动一个默认的tomcat
| docker run -d tomcat

- 2.会发现这个tomcat没有webapps应用,文件在webapps.dist下边,需要拷贝过去
- 3.将操作过的容器通过commit提交为一个镜像,以后用这个修改过的镜像即可
- 4.没加版本号,怕给自己挖坑
| docker commit -a="wg" -m="add webapps mytomcat app" 5c53c737786f tomcat

- 5.查看本地镜像,已经有这个镜像了,下次能直接用了
| docker images

- 6.查看镜像存储层变化
| docker diff 
| docker history

- 7.上边是简易版,可能连接后访问网页失败

 

命令简汇

docker version                        // 镜像外查看,版本信息
docker info                           // 显示系统信息
docker command --help                 // 命令帮助
docker images                         // 查看镜像
docker ps                             // 查看容器
docker search 软件名/镜像名            // 查找仓库镜像
docker stop 容器id                    // 停止容器
docker rm -f 容器id                   // 删除容器
docker rmi -f 镜像id                  // 删除镜像
docker image rm 镜像id                // 删除镜像

docker ps -n=2                        // 查询两个最新创建的容器
docker start 容器id                   // 启动容器
docker restart 容器id                 // 重启容器
docker kill 容器id                    // 强制停止容器

docker logs -f 容器id                  // 实时监听日志 -t打印时间戳
docker logs -tf --tail 10 容器id       // 查看日志 最后10条
docker stats                           // 查看cpu状态
docker top 容器id                      // 查看容器内进程信息

docker cp 容器id:容器内路径 本地路径     // 从容器拷贝内容,关闭了容器也可以
docker cp 本地路径 容器id:容器内路径     // 从本地拷贝内容到容器
ctrl+p+q                               // 退出容器
docker inspect 容器id                  // 查看容器元数据

docker volume create todo-db                    // 添加卷
docker run --restart=always                     // 无论退出状态如何,都重启容器
docker container update --restart=always 容器名  // 已启动容器设置直接重启

元数据

paused:false     是否是暂停状态

测试操作

[root@wg ~]# docker pull centos:7 
[root@wg ~]# docker run -d centos:7 /bin/bash -c "while true;do echo smitty;sleep 1;done"
8b9d0dca4b49e54bc123855717712f2695ecc37d2f0b084660a0ae0e3b5b3802

[root@wg ~]# docker ps
CONTAINER ID    IMAGE       COMMAND                
8b9d0dca4b49    centos:7    "/bin/bash -c 'whi..." 

[root@wg ~]# docker stats
[root@wg ~]# docker top 8b9d0dca4b49     // 能查看到sleep是子进程
[root@wg ~]# docker logs -tf --tail 10 8b9d0dca4b49
2022-02-02T20:49:10.887201000Z smitty
2022-02-02T20:49:11.893381000Z smitty
2022-02-02T20:49:12.896604000Z smitty
2022-02-02T20:49:13.900498000Z smitty
2022-02-02T20:49:14.911676000Z smitty
2022-02-02T20:49:15.908462000Z smitty

# /bin/bash -c 命令表示后面的参数将会作为字符串读入作为执行的命令

 

阿里加速

- 阿里云提供了下载镜像的加速服务,具体操作步骤如下:
| 1.注册阿里云账号,登录
| 2.找到管理平台并进入
| 3.。。。。懒得写了

制作自动化镜像安装 自动镜像是真实自己吗_tomcat