1.docker简介
docker服务启动:systemctl restart docker 或者 systemctl restart docker.service
1.镜像
简介:
docker镜像和容器的关系可以类比为java中类和实例的关系,docker镜像是静态的是不可修改的,当你修改docker镜像时,其实是又生成了一个新的镜像。
docker镜像是分层的,不同的镜像会引用相同的base镜像,举个例子:
比如A镜像层的base镜像是X ,而B镜像的base镜像也有X那么他们两个其实是使用相同的base镜像X的,这其实就大大节省了空间。
配置镜像源:
配置阿里云镜像源: 加入以下配置:(注意需要登录阿里云 如果没有账号可以支付宝扫码登录)
生成镜像加速器并复制地址:
vi /etc/docker/daemon.json 加入下边的json
{
"registry-mirrors": ["https://7297e0oq.mirror.aliyuncs.com"]
}
保存退出重启即可。
镜像命令解释:
docker pull 镜像名:tag ---从镜像仓库拉去镜像
docker images ---查看本地镜像
docker tag 镜像id "新镜像名称 : tag" --当我们忘记为镜像起名和tag时 可以使用该命令 没有起名的镜像 REPOSITORY 和TAG栏均为 <none> 也被称为虚悬镜像 ,这样的镜像并不友好,因为当你以他构建容器的时候,不好排查容器所使用的镜像,(就好似没给人起名字一样 哈哈) 所以还是及时用该命令给你的镜像做好标识哦!(不过大部分在仓库的镜像都是有默认值的)
docker image prune ---清除所有的虚悬镜像
docker image save 镜像名称 > xxx.tar ---将镜像导出到tar文件(也说镜像迁移) 注意: 在默认定义下,docker save
命令会将镜像内容放入输出流中,这就需要我们使用管道进行接收 ( 也就是命令中的 > 符号 ),这属于 Linux 等系统控制台中的用法
还有一种保存镜像的方式:docker save -o ./xxx.tar xxx:latest ---也是保存镜像的一种方式 -o 用来指定输出文件,使用这个选项可以让命令更具有统一性
docker load < xxx.tar ----将xxx.tar镜像文件导入 ,当然也可以用这种方式: docker load -i xxx.tar
docker commit 容器id 镜像名称 ---把当前的容器重新提交为一个新的镜像 (也被叫做黑箱镜像,因为别人根本看不到该镜像的改动 而Dockerfile更透明)
docker build ---构建镜像 根据Dockerfile 比commit更高级一点个人认为
docker rmi 镜像id或者名称 ----删除镜像 多个用逗号分隔即可(删除镜像时必须保证没有容器引用该镜像)
docker rmi -f 镜像id ---强制删除镜像 不管有没有容器引用该镜像 (但是容器不会删除 当重启时 任然可以启动)
未完 待续:
2.容器
容器是在镜像上构建出来的,如果你直接删除容器引用的镜像,是删除不了的。
3.Dockfile
在根目录创建Dockerfile文件
FROM java:8
VOLUME /tmp
ADD /target/study-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 8090
ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]
4.compose