创建镜像推送至仓库

用commit命令创建镜像

先创建一个容器,在容器里做出修改,最后将该容器提交为一个新镜像

创建容器

docker run -it --name test001 ubuntu /bin/bash

修改容器

apt-get install vim

退出容器

exit

提交定制容器

docker commit -m'提交信息' -a'作者信息' 容器ID idktp/myimage:tag
# "idktp/myimage:tag"为镜像名称。
# 其中idktp为个人Docker用户名,myimages为要取得仓库名字

推送镜像至docker hub

docker push idktp/myimage:tag

利用Dockerfile构建镜像

创建一个static_web目录用来保存Dockerfile,这个目录就是我们的构建环境(上下文)

mkdir static_web && cd static_web && touch Dockerfile

将以下内容写入Dockerfile

FROM ubuntu:14.04
MAINTAINER idktp
RUN apt-get update && apt-get install -y nginx
RUN echo 'Hi,i am in your container' 
    >/usr/share/nginx/html/index.html

# FROMMAINTAINERRUN 都是Dockerfile指令,还有其他指令一会儿介绍,指令全都大写
# 指令会按从上到下的顺序进行执行,所以需要合理安排指令顺序
# docker从基础镜像运行一个容器。执行一条指令,对容器做出修改。
# 提交修改后的容器,生成新的镜像层。
# 基于新的镜像层生成新的容器,再执行下一条指令。
# 直到指令执行完毕


# 每一个Dockerfile的第一个指令必须是FROM,FROM指定一个已经存在的镜像,后续指令全都基于该镜像
# MAINTAINER:作者信息
# RUN:该指令会在当前镜像中运行指定的命令

构建镜像

docker build -t='idktp/test001:19.07.30' .
# 注意命令最后有个点,表明上下文是当前文件夹
# idktp/test001:19.07.30为镜像名

根据新镜像构建容器

docker run -d -p 8080:80 --name static_web idktp/test001:19.07.30 nginx -g 'daemon off;'
# -p 代表宿主机的8080端口会绑定容器的80端口,当访问宿主机8080端口时即访问容器的80端口
# -d 表示该容器以分离的模式在后台运行
# 同时需以前运行的方式启动nginx

  

推送镜像至docker hub

docker push idktp/test001:19.07.30

常用Dockerfile指令

CMD 
# 容器被启动时要运行的命令,和RUN命令相似,只是RUN是在构建镜像是运行,而CMD是启动容器时运行,而且CMD会被 docker run命令覆盖
ENTRYPOINT
# 与CMD类似容器被启动时要运行的命令,但是不会被 docker run命令覆盖
WORKDIR
# 为该指令的后面的指令设置工作目录
ADD
# 将构建环境下的文件或者目录复制到镜像中

  

scp root@18.218.205.245:/home/ec2-user/ftp-files/sat1c243119a6494ff7a285658374f978ff/download/2019-12-03/8d96a068b57f47e18aa5b9976d3d81f3.data Desktop