Docker之再顾茅庐(Docker打包上传)

2019-10-30  本文已影响0人  单名一个冲

docker的最终目的为了生产部署,当然要与k8s相结合才能事半功倍,那就来点实用的docker操作和生产使用吧,come on!

1. 试试docker的commit命令
commit命令格式说明:
docker commit <容器名或ID> <镜像名>:<镜像版本>
  1. 先准备一个 centos内核的 docker镜像,并启动该容器
// 我们默认拉取一个最终版本的 centos镜像
> docker search centos

> docker pull centos

> docker run -itd --name centos centos /bin/bash

> docker attach centos
  1. 我们在 centos容器上安装一个 JDK1.8作为我们对该容器的变更操作
    2.1. 我们先熟悉两个命令:
// 从容器中复制到本地系统
docker cp <容器名或ID>:<绝对地址> <本地地址>

// 从本地系统复制到容器中
docker cp <本地地址> <容器名或ID>:<绝对地址>

2.2. 正式操作

// 创建一个 java文件夹,上传 Linux jdk安装包并解压
> mkdir /java

// 把文件 jdk-8u141-linux-x64.tar.gz上传到 centos的 /java目录下(这一步是本地机器操作)
> docker cp jdk-8u141-linux-x64.tar.gz centos:/java

// 解压该文件
> tar -zvxf jdk-8u141-linux-x64.tar.gz

> 配置/etc/profile 文件环境变量(环境变量配置在此省略)

  1. commit 镜像,生成一个新镜像
> docker commit centos centos-jdk1.8:v1
2. 试试docker的 dockerfile打包,使用 build命令

刚才我们提交了一个安装了 jdk的基础镜像,我们利用这个镜像使用 dockerfile方式构建一个docker的启动流程。
这里只简单举例,如果您还不知道什么是dockerfile的写法,请参考博友的链接:
https://www.jianshu.com/p/10ed530766af

build命令格式:

> docker build <镜像名>:<镜像版本> <相对路径或绝对路径>
  1. 首先,我们需要创建一个文件夹,然后文件夹下创建一个名为 "Dockerfile"的文件(dockerfile的构建就是写在这个里面)
// Dockerfile文件内容例如:
// 意思是:从一个ID为xx的镜像中加载,打开跳转到 /app目录下,并执行top命令
FROM <镜像ID>
WORKDIR /app
ENTRYPOINT ["top"]
  1. 然后,在这个文件夹中执行 docker命令
// 注意不要丢了最后的小点,
docker build testdoc:v1.0 .
3. 将 docker镜像上传到 harbor仓库

3.1. 先登录 harbor,登陆可能会报类似如下的几种错误

Error response from daemon: Get http://127.0.01/v2/: dial tcp 127.0.0.1:443: connect: connection refused

Error response from daemon: Get https://127.0.0.1/v2/: x509: certificate signed by unknown authority

登陆命令:
> docker login <ip地址>

解决方法是:在docker配置中添加

// Linux docker方式:
// 把docker.service文件中配置项 ExecStart里添加 --insecure-registry

[Service]
ExecStart=其他参数... \
          --insecure-registry 你的IP地址

----------------------------------------------------------------------------
// Windows docker方式:
{
  "registry-mirrors": [],
  "insecure-registries": [
    "你的IP地址"
  ],
  "debug": true,
  "experimental": false
}

3.2. 推送镜像。首先,先创建一个指定到仓库项目名的tag,然后再推送

tag格式如下:
> docker tag <镜像名或ID> <仓库IP地址/仓库项目名/镜像名>:<镜像版本tag> 
e.g. 例如:
docker tag centos 127.0.0.1/test/centos:v1.0


> docker push <镜像名或ID>[:<镜像版本>]
e.g. 推送:
docker push 127.0.0.1/test/centos:v1.0

3.3. 退出登陆

退出登陆命令:
> docker logout <ip地址>
4.现在你就可以去 harbor 上查看验证了!
上一篇 下一篇

猜你喜欢

热点阅读