docker的最终目的为了生产部署,当然要与k8s相结合才能事半功倍,那就来点实用的docker操作和生产使用吧,come on!
1. 试试docker的commit命令
commit命令格式说明:
docker commit <容器名或ID> <镜像名>:<镜像版本>
- 先准备一个 centos内核的 docker镜像,并启动该容器
// 我们默认拉取一个最终版本的 centos镜像
> docker search centos
> docker pull centos
> docker run -itd --name centos centos /bin/bash
> docker attach centos
- 我们在 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 文件环境变量(环境变量配置在此省略)
- 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 <镜像名>:<镜像版本> <相对路径或绝对路径>
- 首先,我们需要创建一个文件夹,然后文件夹下创建一个名为 "Dockerfile"的文件(dockerfile的构建就是写在这个里面)
// Dockerfile文件内容例如:
// 意思是:从一个ID为xx的镜像中加载,打开跳转到 /app目录下,并执行top命令
FROM <镜像ID>
WORKDIR /app
ENTRYPOINT ["top"]
- 然后,在这个文件夹中执行 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地址>
网友评论