官方文档:https://docs.docker.com/get-started/
https://blog.csdn.net/sch0120/article/details/53219362
exec 进入容器
创建Docker镜像
- 方式一:docker commit (在别的容器基础上做修改,然后commit创建新镜像)
1.进入想要使用的容器,比如我们使用ubuntu15.10举例:
#启动容器
docker run -itd ubuntu:15.10 /bin/bash
#查看该容器id
docker ps
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d2d05fc815e8 ubuntu:15.10 "/bin/bash" 11 seconds ago Up 11 seconds compassionate_williams
# 进入该容器,完成你想做的修改
docker exec -it d2d05fc815e8 /bin/bash
#以修改过的容器为基础创建出镜像
ocker commit -m="测试创建镜像" -a="sky" 529b7923f2e8 sky/myubuntu:1.0
#成功后输出
sha256:52b6979aeb5f83f8c0a346385f92f33077435f3e7407a6a7c241df0831653e53
参数:
-m 注释信息(message),类似git提交是填写注释信息
-a 作者(author)
529b7923f2e8 容器id, 注意是容器id,不是镜像id
sky/myubuntu 仓库名,一般以 作者或公司组织名等/镜像名 命名
1.0 Tag 信息, 如果不写则为latest
- 方式二:使用Dockerfile
将需要对镜像进行的操作全部写到一个文件中,然后使用docker build命令从这个文件中创建镜像。类似于使用MAVEN 的pom.xml对项目依赖进行管理. 这种方法可以使镜像的创建变得透明和独立化,并且创建过程可以被重复执行。
Dockerfile文件以行为单位,行首为Dockerfile命令,命令都是大写形式,其后紧跟着的是命令的参数。
步骤:
- 创建一个dockerfile文件
touch dockerfile # 创建一个dockerfile 文件
vi dockerfile #编辑dockerfile , 在其中写入下列代码
- 编辑dockerfile , 在其中写入下列代码(本代码纯粹为了练习可以使用的命令,没有其他意义)
#Version 1.0.1
FROM centos:latest
MAINTAINER ***u "***u@163.com"
#设置root用户为后续命令的执行者
USER root
#执行操作
RUN yum update -y
RUN yum install -y java
#使用&&拼接命令
RUN touch test.txt && echo "abc" >>abc.txt
#对外暴露端口
EXPOSE 80 8080 1038
#添加文件
ADD abc.txt /opt/
#添加文件夹
ADD /webapp /opt/webapp
#添加网络文件
ADD https://www.baidu.com/img/bd_logo1.png /opt/
#设置环境变量
ENV WEBAPP_PORT=9090
#设置工作目录
WORKDIR /opt/
#设置启动命令
ENTRYPOINT ["ls"]
#设置启动参数
CMD ["-a", "-l"]
#设置卷
VOLUME ["/data", "/var/www"]
#设置子镜像的触发操作
ONBUILD ADD . /app/src
ONBUILD RUN echo "on build excuted" >> onbuild.txt
- 构建镜像
docker build -t sky/test:v1 . # sky/test 仓库名 , v1 Tag(镜像版本信息) , " . " 指明镜像存储目录,"."代表当前目录
#等待----> 如果没有问题会出现successfully build xxxx(镜像id)信息
docker images # 检查创建出的镜像信息,创建完成!
网友评论