docker 保存镜像为tar包 docker 容器保存镜像_docker


前言

Docker 容器和镜像操作,记录下来!


docker 保存镜像为tar包 docker 容器保存镜像_docker_02


容器

  • 创建一个新的容器(ubuntu)并启动
$ docker run -dit --name ubuntu ubuntu


docker 保存镜像为tar包 docker 容器保存镜像_docker 保存镜像为tar包_03


  • 在容器内执行命令(容器在后台启动),用 docker exec 命令
$ docker exec -it ubuntu bash


docker 保存镜像为tar包 docker 容器保存镜像_docker_04


注意:使用 exit 命令退出在容器内执行命令。

  • 查看容器详细信息
& docker inspect ubuntu


包括容器的ID、容器名、环境变量、运行命令、主机配置、网络配置等。


docker 保存镜像为tar包 docker 容器保存镜像_docker 容器保存为镜像_05


使用 -f 参数可以查看用户关心的数据:

  1. 查看容器运行状态:docker inspect -f='{{.State.Running}}' ubuntu


docker 保存镜像为tar包 docker 容器保存镜像_docker 容器保存为镜像_06


  1. 查看容器ip地址:docker inspect -f='{{.NetworkSettings.IPAddress}}' ubuntu


docker 保存镜像为tar包 docker 容器保存镜像_docker 保存镜像为tar包_07


  1. 查看容器名、容器id:docker inspect -f='{{.Name}} {{.ID}}' ubuntu


docker 保存镜像为tar包 docker 容器保存镜像_docker 保存镜像为tar包_08


  1. 查看容器的进程
$ docker top ubuntu


docker 保存镜像为tar包 docker 容器保存镜像_docker_09


容器导出

  • 使用 export 命令可以导出容器
$ docker export nginx > ./docker/nginx.tar


该命令将nginx容器导入到docker目录下。


docker 保存镜像为tar包 docker 容器保存镜像_docker_10


容器导入

  • 使用 import 命令导入容器
$ cat nginx.tar | docker import - importednginx:ilatest


docker 保存镜像为tar包 docker 容器保存镜像_docker_11


镜像

镜像和容器的关系就像是程序和进程的关系,镜像扮演的角色就是容器的模板,不同镜像可以构建不同的容器。

本地镜像管理

  • 执行docker run再去下载会比较慢,可以先执行docker pull将镜像先下载下来,再运行。
$ docker pull hub.c.163.com/library/nginx:latest


docker 保存镜像为tar包 docker 容器保存镜像_docker 容器保存为镜像_12


  • 由下载下来的镜像来构建容器
$ docker run -itd --name 163nginx -p 80:80 hub.c.163.com/library/nginx:latest


docker 保存镜像为tar包 docker 容器保存镜像_docker 容器保存为镜像_13


  • 删除镜像docker rmi
$ docker rmi 镜像ID/镜像名


有的时候,无法删除一个镜像,大部分原因是因为该镜像被一个容器所依赖,此时需要先删除容器,然后就可以删除镜像了。

创建本地镜像

  • 根据已有容器创建一个本地镜像:commit 命令
$ docker commit -m "update index.html" --author='leeyunt' 13af96130e40 leeyunt/nginx:v1


命令解释:

  1. 参数-m是对创建的该镜像的一个简单描述。
  2. --author表示该镜像的作者。
  3. 13af96130e40表示创建镜像所依据的容器的id
  4. leeyunt/nginx则表示仓库名,leeyunt是名称空间,nginx是镜像名。
  5. v1表示仓库的tag。
  6. 创建完成后,通过docker images命令就可以查看到刚刚创建的镜像。
  7. 通过刚刚创建的镜像运行一个容器,访问该容器,发现nginx默认的首页已经发生改变。


docker 保存镜像为tar包 docker 容器保存镜像_dockerhub删除镜像_14


  • 根据Dockerfile文件构建镜像
  • 新建一个名为Dockerfile的文件,内容如下:
FROM nginx
MAINTAINER leeyunt "leeyunt@outlook.com"
RUN echo 'hello docker!'>/usr/share/nginx/html/index.html
COPY ./hello.html /usr/share/nginx/html/


解释:

  1. FROM nginx表示该镜像的构建,以已有的nginx镜像为基础,在该镜像的基础上构建。
  2. MAINTAINER指令用来声明创建镜像的作者信息以及邮箱信息,这个命令不是必须的。
  3. RUN指令用来修改镜像,算是使用比较频繁的一个指令了,该指令可以用来安装程序、安装库以及配置应用程序等,一个RUN指令执行会在当前镜像的基础上创建一个新的镜像层,接下来的指令将在这个新的镜像层上执行,RUN语句有两种不同的形式:shell格式和exec格式。本案例采用的shell格式,shell 格式就像linux命令一样,exec格式则是一个JSON数组,将命令放到数组中即可。在使用RUN命令时,适当的时候可以将多个RUN命令合并成一个,这样可以避免在创建镜像时创建过多的层。
  4. COPY语句则是将镜像上下文中的hello.html文件拷贝到镜像中。


docker 保存镜像为tar包 docker 容器保存镜像_dockerhub删除镜像_15


  1. 文件创建完成后,执行如下命令进行构建:
$ docker build -t leeyunt/nginx:v1 .


命令解释:

  1. -t参数用来指定镜像的命名空间,仓库名以及TAG等信息。
  2. 最后面的.是指镜像构建上下文。


docker 保存镜像为tar包 docker 容器保存镜像_docker 保存镜像为tar包_16


将镜像上传到Docker Hub

  • 通过docker push命令
$ docker push leeyunt/nginx:v1


docker 保存镜像为tar包 docker 容器保存镜像_dockerhub删除镜像_17


上传成功后,用户登录 Docker Hub,就可以看到刚刚的镜像已经上传成功了。


docker 保存镜像为tar包 docker 容器保存镜像_docker 保存镜像为tar包_18


最后

下期学习Docker高级用法。


docker 保存镜像为tar包 docker 容器保存镜像_docker 容器保存为镜像_19


今日寄语:

“昨天下了雨,今天刮了风,明天太阳就出来了 ️”

桃李报春