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(没看完)

黑马程序员Docker容器化技术,从零学会Docker教程

可以先看1-13课、以及

docker概述

文章目录



ubuntu安装docker

奇了葩了,我的ubuntu20g竟然死活装不了docker

参考文章:Ubuntu 16.04安装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可复用容器的主要内容,如果未能解决你的问题,请参考以下文章

Docker容器之镜像管理,端口映射,容器互联

docker容器可执行文件不能执行

CentOS7 部署Docker&搭建OwnCloud私人云盘服务

docker笔记-docker-basic

使用docker容器安装nginx的使用

docker:容器与虚拟机的比较