docker自定义镜像以及基本操作指令

docker中自定义镜像这是一项基本操作,这样我们可以很方便的获取到一个完美的环境
自定义镜像一般都是通过打包容器获取到的,无论是commit还是dockerfile,dockerfile说到底还是要执行一次commit

1,使用docker commit命令自定义镜像

我带大家走一遍完整的流程

安装docker,并查看docker的版本验证docker是否安装好了

yum install docker
docker version

然后去拉一个centos7版本的镜像下来

docker search centos
docker pull centos:7

安装下来后,用centos的镜像创建并运行一个容器,在容器内部输入ll查看容器内目录

docker run -it centos:7
ll

在这里插入图片描述
docker run -it centos:7这个运行交互式容器中有许多参数:
-i代表允许你对容器内的标准输入 (STDIN) 进行交互
-t表示在新容器内指定一个伪终端或终端
-d:让容器在后台运行
-P:将容器内部使用的网络端口映射到主机上
-p:设置所映射的端口
–name:指定容器名称

检查一下容器中是否有vim编辑工具,我这是没有的,然后进行安装

yum install vim

在这里插入图片描述
安装好之后我们就可以退出这个容器了,准备把这个安装好vim的centos容器打包成一个镜像

exit  #退出
docker ps -a  #查看所有的容器

在这里插入图片描述

docker commit -m='centos_vim' -a='kkk' 0475fa centos-vim  #生成一个名为centos-vim的镜像
docker images  #查看新的镜像是否生成
docker run -it centos-vim  #运行新的镜像
vim my_images.py  #在容器内使用vim  没有报错,代表我们新建的带有vim的centos镜像已经完成了,不需要再下载vim了

在这里插入图片描述

2,使用Dockerfile自定义创建镜像

使用Dockerfile可以更清楚的观察镜像创建的过程
简单来使用一次
创建一个文件夹,编辑Dockerfile文件

mkdir centos_vim 
vim Dockerfile

在Dockerfile中写入如下内容

FROM centos:7
RUN yum install -y vim

当然我这只写了from与run,下面给大家列出参数的含义与用法:
– FROM:基础镜像
– MAINTAINER:镜像创建者信息
– EXPOSE:开放的端口
– ENV:设置变量
– ADD:复制文件到镜像
– RUN:制作镜像时执行的命令,可以有多个
– WORKDIR:定义容器默认工作目录
– CMD:容器启动时执行的命令,仅可以有一条CMD
– LABEL:LABEL = = …,镜像标签
– COPY:COPY [–chown=:] … / [–chown=:] ["",… “”],与ADD命令相似
– ENTRYPOINT:ENTRYPOINT [“executable”, “param1”, “param2”] / command param1 param2,ENTRYPOINT 的目的和 CMD 一样,都是在指定容器启动程序及参数,ENTRYPOINT 在运行时也可以替代,不过比 CMD 要略显繁琐,需要通过 docker run 的参数 –entrypoint 来指定。当指定了 ENTRYPOINT 后, CMD 的含义就发生了改变,不再是直接的运行其命令,而是将CMD 的内容作为参数传给 ENTRYPOINT 指令。
ENTRYPOINT与CMD的比较:
1,当有多个ENTRYPOINT CMD它们都只执行最后一个
2,当容器为一个可执行文件时应该定义ENTRYPOINT
3,当同时定义ENTRYPOINT 和 CMD时,CMD为ENTRYPOINT的默认参数
4,当docker执行run命令时,在里面指定CMD时,CMD将会被重写。
– VOLUME:VOLUME ["/data"],在制作镜像时挂载卷。会在宿主机上自动生 成一个对应的共享目录。
– USER :USER [:] / [:],给镜像添加一个用户。
/path/to/workdir,为RUN, CMD, ENTRYPOINT, COPY, ADD 创建工作目录。
– ARG:ARG [=],dockerfile中的变量。

dockerfile文件创建好后,直接在当前目录执行以下命令

docker build -t centos:vim2 .

-t指定要创建的目标镜像名
. 指定Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
这个点 . 不要忽略了,很阴险

在这里插入图片描述
上图中可以看到Dockerfile正在创建,我框出的地方大家可以看到一个Running in 405…这代表着它创建了一个临时容器
在这里插入图片描述
镜像创建成功后删除了这个容器,这其中的过程其实和commit很像
在这里插入图片描述
通过Dockerfile创建的容器运行成功,并且使用vim没有报错

好了,自定义容器的两种方法就说到这里了

docker命令扩展

查看已有docker镜像:docker images
搜索docker镜像:docker search 镜像名称
下载镜像:docker pull 镜像:版本号,例:docker pull python:3.5
运行交互式容器: docker run -it 镜像:标签 /bin/bash,例:docker run -it ubuntu:15.10 /bin/bash,其中-i代表允许你对容器内的标准输入 (STDIN) 进行交互,-t表示在新容器内指定一个伪终端或终端。
运行容器参数: -d:让容器在后台运行,-P:将容器内部使用的网络端口映射到主机上,-p:设置所映射的端口,–name:指定容器名称。
运行容器:docker exec -it 容器名称|容器ID /bin/bash
查看运行中的容器: docker ps
查看全部容器: docker ps -a
停止容器: docker stop 容器名称/容器id
启动容器: docker start 容器名称/容器id
重启容器: docker restart 容器名称/容器id
删除容器:docker rm 容器名称/容器id,删除运行中的容器:docker rm -f 容器名称/容器id
查询最后一次创建的容器: docker ps -l
查看端口映射情况:docker port 容器名称/容器id
查看容器内部运行的进程:docker top 镜像名称/容器id
查看容器IP:docker inspect --format=’{{.NetworkSettings.IPAddress}}’ 容器名|容器ID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值