docker可复用容器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker可复用容器相关的知识,希望对你有一定的参考价值。
参考技术A 1.先编辑Dockerfile文件FROM java:8
# 作者
MAINTAINER wuyue
# 添加jar到镜像并命名为xzsl.jar
ADD application-0.0.1-SNAPSHOT.jar /app/xzsl.jar
# 镜像启动后暴露的端口
EXPOSE 20006
# jar运行命令,参数使用逗号隔开
ENTRYPOINT ["java","-jar","/app/xzsl.jar"]
2.创建挂载目录
在Dockerfile文件的目录那创建个挂载目录,我创建的是/app
3.创建打包容器
打包镜像-创建并运行容器
打包镜像:在Dockerfile文件那里执行下边命令
docker build -t xzsl .
创建并运行容器:
docker run -d --restart=always --name xzsl -p 20006:20006 -v /etc/project/xzsl/docker/app:/app xzsl
执行完毕即可更换jar包重启docker容器就行了.
docker教程docker视频教程(ubuntu)数据卷挂载数据卷容器volume端口映射(镜像叠加,分层复用)rootfsbootfs(没看完)
可以先看1-13课、以及
docker概述
文章目录
ubuntu安装docker
奇了葩了,我的ubuntu20g竟然死活装不了docker
另外可参考:Ubuntu 16.04安装docker详细步骤
docker架构
配置docker镜像加速器(便于从docker官方下载镜像)
https://www.bilibili.com/video/BV1CJ411T7BK?p=5&spm_id_from=pageDriver
略
docker命令
服务相关命令
操作daemon服务
操作image镜像
操作container容器
启动docker:
systemctl start docker
查看docker状态:
systemctl status docker
停止docker:
systemctl stop docker
重启docker:
systemctl restart docker
开机启动docker:
systemctl enable docker
镜像相关命令
查看镜像列表
docker images
如果没有指定版本tag,且版本只有一个就显示为latest
查看镜像详细信息 inspect
docker inspect [镜像id]或[镜像名:TAG]
搜索镜像 search
会去docker hub搜索:https://registry.hub.docker.com/
docker search [镜像名]
最后一个AUTOMATED为自动流程构建
拉取镜像 pull
docker pull [镜像名:版本号]
如果不加版本号,默认就是下载latest
下好了
如果要下其他版本,在docker hub上可以查看对应版本号(注意同一版本号可对应多个版本名)
删除镜像 rmi(i是image镜像的意思)
docker rmi [镜像id]
只删除latest:
docker rmi [镜像名]
删除指定tag镜像:
docker rmi [镜像名:tag]
列出所有镜像id:
docker images -q
删除所有镜像:
docker rmi `docker images -q`
容器相关命令
创建交互式容器-it、守护式容器-id(通常结合使用-itd)
创建并分配终端进入容器(交互式容器):
docker run -it --name=[容器名] [镜像名:TAG]或[镜像id] /bin/bash
- i表示interactive,后台保持运行;t表示分配一个terminal终端
--name
后的=
可以省略/bin/bash
可以省略,默认就是这个
创建容器不进入(守护式容器):(d是daemon的意思,创建守护式容器)
docker run -id --name=[容器名] [镜像名:TAG]或[镜像id]
宿主机:创建容器的主机
退出容器 exit
注意:用it创建的容器,exit后就看不到了
exit
查看历史退出的容器和正在运行的容器 ps -a
(历史退出的容器看不到)
docker ps
(-a
看得到历史退出的容器)
docker ps -a
进入后台运行的容器 exec
先用docker ps
查看后台容器列表,再运行:
docker exec -it [容器名] /bin/bash
停止容器 stop
先ps -a
查看运行中的容器名,然后:
docker stop [容器名]
启动容器 start
先查看历史容器docker ps -a
找到容器名,然后:
docker start [容器名]
删除容器 rm
docker rm [容器名]
或
docker rm [容器id]
注意:启动中的容器不能被删除
删除所有容器
docker rm `docker ps -aq`
查看所有容器id
docker ps -aq
查看容器信息
一大堆信息:
docker inspect hik_test
容器的数据卷
数据卷的概念
三个问题
- Docker容器删除后,在容器里的数据还在吗?
- Docker容器和外部机器可以直接交换文件吗?
- 容器之间如何进行数据交互?
数据卷
- 数据卷是宿主机中的一个目录或文件
- 当容器目录和数据卷目录绑定后,对方的修改会立即同步
- 一个数据卷可以被多个容器同时挂载
- 一个容器也可以被挂载多个数据卷
数据卷的作用
- 容器数据持久化
- 外部机器和容器间接通信
- 容器之间数据交换
配置数据卷(挂载)
基本命令
docker run -itd --name=[容器名] -v [ubuntu挂载路径]:[docker被挂载路径] [镜像id] /bin/bash
然后可以看懂home下多了hik2.3目录:
然后进入容器创建文件,可看到文件已同步:
挂载多个目录
用多个-v命令就好了
两个容器挂载同一数据卷,实现两个容器数据交换
按上面操作分别创建容器的时候把ubuntu上同一个数据卷目录挂载到不同的容器上去就行了,三个目录都能同步
数据卷容器(用来替代宿主机挂载目录的容器)
只要做好了绑定工作,即使数据卷容器被删除,也不会影响其他容器的共享(每个容器的共享目录仍会同步)
数据卷小结
docker应用部署——mysql(端口映射)(略)
https://www.bilibili.com/video/BV1CJ411T7BK?p=14
相关指令:
docker应用部署——tomcat(略)
docker应用部署——nginx(略)
docker应用部署——redis(略)
镜像原理(镜像叠加,分层复用)(rootfs、bootfs)
将容器转换成镜像分享给别人
将容器转换成镜像 commit、save 加载镜像压缩包 load
commit:
docker commit [容器id] [目标镜像名称:目标tag]
save:(注意保存的时候不建议写镜像id,会导致后面加载的时候缺失镜像名:tag)
docker save -o [镜像压缩名.tar] [镜像id]或[镜像名:tag]
load:
docker load -i [镜像压缩包名.tar]
注意:挂载目录的文件不能写入进镜像里面,其他的都可以
dockerfile概述及关键字
https://www.bilibili.com/video/BV1CJ411T7BK?p=20
看到这,先去搞搞vscode远程docker
后面还有
以上是关于docker可复用容器的主要内容,如果未能解决你的问题,请参考以下文章