怎么导出docker配置好的容器 docker 导出_怎么导出docker配置好的容器


《Docker技术入门与实战》 的读书笔记, 之所以想仔细看看Docker是因为感觉这玩意在配置环境方面是真的好用,有些时候只是想跑跑某些代码,试试效果,配环境浪费了太多时间,并且用完之后说不定还导致之前环境变化出问题.用了Docker避免了一堆问题,并且Docker还可以偶尔配置个私有云什么的玩玩

1. 基本概念与安装过程

详见Docker配置脚本中的文档

2. Docker镜像的操作

基础操作:

  • 获取镜像:docker pull [server]name:tag
  • 列出当前主机上的镜像: docker images / docker image ls
  • 给镜像打tag: docker tag ubuntu:latest myubuntu:latest
  • 查看镜像历史: docker history ubuntu:latest
  • 搜索镜像: docker search
  • 删除镜像: docker rmi / docker image rm 使用id删除会尝试先删除所有tag,再删除镜像本身,当有container存在的时候镜像无法被删除
  • 查看当前运行的container: docker ps -a
  • 清理镜像: docker image prune

创建新镜像:

  • 基于现有容器创建: docker [container] commit CONTAINER name:tag
  • 基于Dockerfile创建

导出和载入镜像:

  • 存出: docker [image] save eg:docker save -o ubuntu18.04.tar ubuntu:18.04
  • 载入: docker load -i ubuntu18.04.tar或者docker load < ubuntu18.04.tar

上传镜像:

docker push name:tag或者推送到私有registry需要先打tag

docker tag test:latest 192.168.1.3:5000/test:latest

docker push 192.168.1.3:5000/test:latest

3. Docker容器的操作

创建并运行容器

内部运行逻辑:

  1. 检查镜像是否存在,不存在则从远程下载
  2. 利用镜像创建容器并启动
  3. 分配文件系统给容器,并在只读镜像层外侧挂载一层可读可写层
  4. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中
  5. 从网桥的地址池配置一个IP地址给容器
  6. 执行用户指定的应用程序
  7. 执行完毕容器终止运行

eg:docker run -it ubunu:18.04 /bin/bash

docker run --name 命令可以指定docker容器名字

守护态运行:

让容器在后台运行可以使用-d参数启动后会返回一个id,也可以使用docker ps -a查看后台运行的容器

停止容器运行:

docker stop

进入后台运行的容器

docker attach 进入后台容器,所有窗口会同步

docker exec 最推荐的方式

删除容器

docker container rm

导入和导出容器

docker export -o CONTAINER导出

docker import file name:tag导入

文件复制

docker cp CONTAINER:SRC_PATH DST_PATH

4. Docker数据管理与端口映射

数据卷(Data Volumes)为可供容器使用的特殊目录,将主机的目录直接映射到容器中,类似Linux下的mount命令.

docker run -it -v /home/dell/test:/data:rw最后的权限可以是ro rw等.

端口映射:Docker启动的时候可以通过指定参数将外部端口映射到Docker容器的端口

  • -p:docker run -p 12580:80 ...
  • -P:随机把主机49000~49900端口映射到容器中

5. 利用Dockerfile创建镜像

基本结构

以#开头的为注释,文件内容基本可以分成四块:基础镜像信息 维护者信息 镜像操作指令 容器启动时执行的指令

各种指令

配置指令:

  • ARG: 定义创建镜像时使用的变量
  • FROM: 指定所创建镜像的基础镜像
  • LABEL:为生成的镜像添加标签信息
  • EXPOSE:设置镜像内服务监听的端口
  • ENV: 指定环境变量
  • ENTRYPOINT:指定镜像的默认入口命令
  • VOLUME: 创建一个数据卷挂载点
  • USER: 指定运行容器的用户名
  • WORKDIR: 配置工作目录
  • ONBUILD:创建子镜像时自动执行的命令
  • STOPSIGNAL: 指定退出的信号值
  • HEATHCHECK: 配置启动容器如何进行健康检查
  • SHELL:指定默认shell

操作指令 :

  • RUN: 执行命令
  • CMD: 启动容器时指定默认执行的命令
  • ADD: 添加内容到镜像
  • COPY: 复制内容到镜像

创建镜像

docker build [OPTIONS] PATH

使用.dockerignore文件

防止创建镜像的时候把无关数据发送的Docker服务端

使用技巧

  • 对于需要编译的语言,编译环境和运行环境最好分开制作两个镜像,一个用于编译,另一个用于运行
  • 修改软件源: vi /etc/apt/sources.list.d/163.list