镜像操作查看镜像列表# 命令 docker images # 输出结果 :'REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 3218b38490ce 3 weeks ago 516MB' # 各个选项参数如下所示： :'REPOSITORY：表示镜像的仓库源。 TAG：镜像的标签。 IMAGE ID：镜像ID。 CREATED：镜像创建时间。 SIZE：镜像大小。' # TAG可以用来标记同一镜像的不同版本，如nginx:latest和nginx:1.16.1即表示nginx的最新版和nginx的查找镜像# 命令结构 docker search [OPTIONS] TERM # OPTIONS说明如下： :'--automated：只列出automated build类型的镜像。 --no-trunc：显示完整的镜像描述。 --filter=stars：列出收藏数不小于指定值的镜像。' # 例如查找mysql镜像且收藏数不小于25 docker search --filter=stars=25 mysql # 运行结果会有如下参数 :'NAME：镜像仓库源的名称。 DESCRIPTION：镜像的描述。 OFFICIAL：是否是Docker官方发布。 STARS：类似GitHub里面的STARS，表示点赞、喜欢的意思。 ​AUTOMATED：自动构建。'拉取镜像# 命令结构 docker pull [OPTIONS] NAME[:TAG|@DIGEST] # OPTIONS说明如下： :'-a：拉取所有tagged镜像。 --disable-content-trust：忽略镜像的校验，默认开启。' # 例如要拉取nginx:1.16.1镜像 docker pull nginx:1.16.1推送镜像# 命令结构 docker push [OPTIONS] NAME[:TAG] # OPTIONS说明： :'--disable-content-trust :忽略镜像的校验,默认开启' # 例如将本地的myapache:v1推送到仓库中 docker push myapache:v1删除镜像# 命令结构 docker rmi [OPTIONS] IMAGE [IMAGE...] # OPTIONS说明如下： :'-f：强制删除。 --no-prune：不移除该镜像的过程镜像，默认移除'容器操作创建容器# 命令结构 docker run [options] 镜像名 # OPTIONS说明如下： :'-i：表示创建要给交互式容器。 -t：表示运行容器的同时创建一个伪终端，常与-i搭配使用。 --name：自定义容器名。'查看容器列表# 命令结构 docker ps [options] # OPTIONS说明如下： :'-l：默认的查看只会查看正在运行中的容器信息。 -a：显示所有运行过的镜像信息。 -q：表示只显示对应的容器ID信息。'删除容器# 命令结构 docker rm [options] 容器ID # OPTIONS说明如下： -f：表示强制删除。暂停容器(正常关机)# 命令结构 docker stop 容器ID运行容器# 命令结构 docker run [options] 镜像名 # OPTIONS说明如下： :'-i：表示创建要给交互式容器。 -t：表示运行容器的同时创建一个伪终端，常与-i搭配使用。 --name：自定义容器名。' 重启容器# 命令结构 docker restart 容器ID暂停容器(“拔电源”)# 命令结构 docker kill 容器ID查看容器日志# 命令结构 docker logs 容器ID # OPTIONS说明如下： :'-f：跟随打印最新的日志追加在最后面。 -t：显示日志打印的时间戳。 -tail：显示最新的指定数量的几条日志信息。'查看容器线程信息# 命令结构 docker top 容器ID查看容器内部细节信息# OPTIONS说明如下： docker inspect 容器ID
构建基础环境mkdir nginx cp /etc/yum.repos.d/local.repo nginx/ cd nginx curl -O http://mirrors.douxuedu.com/cloud/nginx-1.12.2.tar.gz编写Dockerfilecat >> Dockerfile <<EOF FROM centos:7 MAINTAINER test RUN yum -y update RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make RUN useradd -M -s /sbin/nologin nginx ADD nginx-1.12.2.tar.gz /usr/local/src WORKDIR /usr/local/src WORKDIR nginx-1.12.2 RUN ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-http_flv_module RUN make && make install ENV PATH /usr/local/nginx/sbin:\$PATH EXPOSE 80 EXPOSE 443 RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf ADD run.sh /run.sh RUN chmod 755 /run.sh CMD ["/run.sh"] EOF编写启动脚本cat > run.sh <<EOF #!/bin/bash /usr/local/nginx/sbin/nginx EOF执行docker buid构建镜像docker build -t nginx:centos . # 以下是运行结果片段 :'...... Step 16/17 : RUN chmod 755 /run.sh ---> Running in 12f5dc188264 Removing intermediate container 12f5dc188264 ---> 7c9ad8959c34 Step 17/17 : CMD ["/run.sh"] ---> Running in 17404a6af1a7 Removing intermediate container 17404a6af1a7 ---> 13adc5edfafa Successfully built 13adc5edfafa Successfully tagged nginx:centos // 此镜像构建过程时间为1-2分钟，请耐心等待!'验证# 查看镜像列表 docker images # 如有nginx:centos即构建成功
Dockerfile是什么Dockerfile是一个文本文档，其中包含了组合映像的命令，可以使用在命令行中调用任何命令。Docker通过读取Dockerfile中的指令自动生成映像。Dockerfile分为呢几部分基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令，Dockerfile中“#”为Dockerfile中的注释Dockerfile主要指令有哪些FROM：指定基础镜像，必须为第一个命令。 MAINTAINER：维护者信息。 RUN：构建镜像时执行的命令。 ADD：将本地文件添加到容器中，tar类型文件会自动解压（网络压缩资源不会被解压），可以访问网络资源，类似wget。 COPY：功能类似ADD，但是是不会自动解压文件，也不能访问网络资源。 CMD：构建容器后调用，也就是在容器启动时才进行调用。 ENTRYPOINT：配置容器，使其可执行化。配合CMD可省去“application”，只使用参数。 LABEL：用于为镜像添加元数据。 ENV：设置环境变量。 EXPOSE：指定与外界交互的端口。 VOLUME：用于指定持久化目录。 WORKDIR：工作目录，类似于cd命令。 USER：指定运行容器时的用户名或UID，后续的RUN也会使用指定用户。使用USER指定用户时，可以使用用户名、UID或GID，或是两者的组合。当服务不需要管理员权限时，可通过该命令指定运行用户。 ARG：用于指定传递给构建运行时的变量。 ONBUILD：用于设置镜像触发器。实操一下吧以centos:latest为基础镜像，安装JDK 1.8并构建新的镜像centos-jdkmkdir centos-jdk mv jdk/jdk-8u141-linux-x64.tar.gz ./centos-jdk/ cd centos-jdk/ # 将dockerfile指令写入到Dockerfile文件内 cat > Dockerfile << EOF FROM centos MAINTAINER test RUN mkdir /usr/local/java ADD jdk-8u141-linux-x64.tar.gz /usr/local/java/ RUN ln -s /usr/local/java/jdk1.8.0_141 /usr/local/java/jdk ENV JAVA_HOME /usr/local/java/jdk ENV JRE_HOME \${JAVA_HOME}/jre ENV CLASSPATH .:\${JAVA_HOME}/lib:\${JRE_HOME}/lib ENV PATH \${JAVA_HOME}/bin:$PATH EOF docker build -t="centos-jdk" . # 执行docker buid命令 docker build -t="centos-jdk" . # 一下是输出结果 :'Sending build context to Docker daemon 185.5MB Step 1/9 : FROM centos ---> 0f3e07c0138f Step 2/9 : MAINTAINER test ---> Running in 1a6a5c210531 Removing intermediate container 1a6a5c210531 ---> 286d78e0b9bf Step 3/9 : RUN mkdir /usr/local/java ---> Running in 2dbbac61b2cf Removing intermediate container 2dbbac61b2cf ---> 369567834d80 Step 4/9 : ADD jdk-8u141-linux-x64.tar.gz /usr/local/java/ ---> 8fb102032ae2 Step 5/9 : RUN ln -s /usr/local/java/jdk1.8.0_141 /usr/local/java/jdk ---> Running in d8301e932f7c Removing intermediate container d8301e932f7c ---> 7c82ee6703c5 Step 6/9 : ENV JAVA_HOME /usr/local/java/jdk ---> Running in d8159a32efae Removing intermediate container d8159a32efae ---> d270abf08fa2 Step 7/9 : ENV JRE_HOME ${JAVA_HOME}/jre ---> Running in 5206ba2ec963 Removing intermediate container 5206ba2ec963 ---> a52dc52bae76 Step 8/9 : ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib ---> Running in 41fbd969bd90 Removing intermediate container 41fbd969bd90 ---> ff44f5f90877 Step 9/9 : ENV PATH ${JAVA_HOME}/bin:$PATH ---> Running in 7affe7505c82 Removing intermediate container 7affe7505c82 ---> bdf402785277 Successfully built bdf402785277 Successfully tagged centos-jdk:latest' . # 测试部分 # 查看docker镜像 docker images # 创建容器进行测试 docker run -it centos-jdk /bin/bash # 以下命令在容器内运行 java -version # 运行输出 : 'java version "1.8.0_141" Java(TM) SE Runtime Environment (build 1.8.0_141-b15) Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode) '
代码如下vi disk.sh #!/bin/bash fdisk /dev/sdb <<EOF n p 1 #必须的空格，代表第一次回车 #必须的空格，代表第二次回车（回想分区过程就知道了） wq EOF /sbin/mkfs.ext4 /dev/sdb1 && /bin/mkdir -p /data && /bin/mount /dev/sdb1 /data echo 'LABEL=data_disk /data ext4 defaults 0 2' >> /etc/fstabEOF语法梳理#EOF是END Of File的缩写,表示自定义终止符.既然自定义,那么EOF就不是固定的,可以随意设置别名,在linux按ctrl-d就代表EOF. #EOF一般会配合cat能够多行文本输出. #其用法如下: <<EOF //开始 .... EOF //结束 #还可以自定义，比如自定义： <<BBB //开始 .... BBB //结束
.gzgzip #压缩,后缀为.gz gunzip #解压.gz压缩文件 gzip -d #解压.gz压缩文件 gzip -r #递归操作,将指定目录下的所有文件及子目录一并处理.bz2bzip2 #压缩,后缀为.bz2 bunzip #解压.bz2压缩文件 bzip2 -d #解压.bz2压缩文件.xzxz #压缩,后缀为.xz unxz #解压.xz压缩文件 xz -d #解压.xz压缩文件三者的区别{lamp/}压缩命令压/解速度压缩率压缩后缀gzip快低.gzbzip2比gzip慢比gzip高.bz2xz压慢解快最高.xz
一、命令基础知识1.命令提示符[root@localhost ~]# root:当前登录用户 @:读做“at”,意思是在···之上 localhost:当前登录的主机名 ~:表示在当前用户的家目录 #:表示当前为超级用户登录 [root@localhost ~]$ 前面与上面解释相同 $:表示当前为普通用户登录2.命令的基本格式命令名 选项 参数3.命令帮助命令名 --help二、基础命令1.显示当前目录pwd2.改变工作路径cd 引申知识 cd ~ #返回家目录 cd - #返回上次工作路径 . 当前目录 .. 上级目录 绝对路径:从根目录开始的路径 相对路径:从当前目录开始的路径3.创建目录mkdir #创建目录 mkdir -p #创建多级目录4.创建文件touch5.显示文件列表ls #显示文件列表 ls -a #显示所以文件及目录 ls -d #显示目录本身 ls -l #显示文件列表的详细信息 : '引申知识 -rwxrwxrwx. 1 root root 1911 3月 16 15:49 /etc/passwd -:标明当前是文件(r标明当前是目录) rwx:r可读w可写x可执行第一组为所属用户，第二组为所属组，第三组为其他用户 1:表示文件链接数 root root:第一个为此文件所属用户,第二个为此文件所属组 1911:此文件大小 3月 16 15:49:标明此文件被修改的时间为3月16的15点49分 /etc/passwd:文件名 ' ls -r #逆序显示 ls -t #按照时间顺序显示6.复制cp #复制 cp -r #递归复制(复制目录内的所有)7.删除rm #删除(需要输入y确认) rm -f #强制删除文件 rm -r #强制删除目录 rm -rf #强制删除8.移动mv #移动 mv 源名称 目标名称 #改名9.显示文件内容#(1)显示全部内容 cat #(2)显示头x行 head -x 文件 #(x<=10) #(3)显示尾x行 tail -x 文件 #(x<=10) #(4)只能后翻查询全部 more #空格逐行显示回车逐页显示 #(5)可前后翻查询全部 less #退出按q10.创建链接ln #创建硬链接 ln -s #创建软链接