WHCSRL 技术网

docker容器打包/下载/让容器与宿主机处于同一网段_sanqin

基本条件

需要安装docker

打包镜像

这里以 mattrayner/lamp为基础

mattrayner/lamp,网站根目录位于 /app,数据库root用户默认无密码

开启容器后,进行编辑(配置主页等),容器内ctrl+p+q可快速退出容器

# 开启容器
docker run -it -name dockerName mattrayner/lamp
# 进入容器
docker exec -it lamp bash

# 导入数据库推荐使用这种方法
容器内:mysql < sqlFile.sql
# 移动文件到docker容器方法
docker cp 本地文件 dockerName:容器内路径

# 基于修改后的容器创建镜像
docker commit 容器名字 镜像名称
# 镜像重命名,用于联网下载镜像
docker tag 旧镜像名 用户名称/新镜像名
# 导出镜像
docker save -o 导出名字.tar 镜像名字

# 登入账号(需要先在官网创建)
docker login
docker push 用户名称/镜像名
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

获取/使用镜像

获取

有网

# 直接下载镜像
docker pull 用户名称/镜像名
  • 1
  • 2

没网

服务器需要与有镜像包的主机互通,直接通过文件传输命令传输,方法有多种

# 获取镜像
scp 导出的镜像 root@服务器ip:上传路径
#导入镜像
docker load < 名字.tar
  • 1
  • 2
  • 3
  • 4

使用

让容器继承某个网卡,打到同网段通信的目的(注:容器可以与网段内主机互通,但是不和宿主机互通)

# 创建虚拟网卡,-d 驱动网络管理为macvlan虚拟化网卡,parente指定为基础网卡(能和网段内通信的网卡)
docker network create -d macvlan --subnet=网段/掩码 --gateway=网关 -o parent=网卡 虚拟网卡名
# 使用虚拟网卡启动容器
docker run -d --privileged --net 虚拟网卡名 --ip=指定ip --name 容器名 镜像名
  • 1
  • 2
  • 3
  • 4
推荐阅读