Docker操作及镜像构建

  1. 基础操作
查看本地镜像:docker images 
搜索镜像:docker search centos 
搜索镜像并过滤是官方的: docker search --filter "is-official=true" centos 
搜索镜像并过滤大于多少颗星星的:docker search --filter stars=10 centos 
下载centos7镜像:docker pull centos:7 
修改本地镜像名字(小写):docker tag centos:7 mycentos:1 
本地镜像的删除:docker rmi centos:7
构建容器:docker run -itd --name=mycentos centos:7 
     -i :表示以交互模式运行容器(让容器的标准输入保持打开)  
     -d:表示后台运行容器,并返回容器ID 
     -t:为容器重新分配一个伪输入终端
     --name:为容器指定名称 
查看本地所有的容器:docker ps -a 
查看本地正在运行的容器:docker ps 
停止容器:docker stop CONTAINER_ID /CONTAINER_NAME 
一次性停止所有容器:docker stop $(docker ps -a -q) 
启动容器:docker start CONTAINER_ID / CONTAINER_NAME 
重启容器:docker restart CONTAINER_ID / CONTAINER_NAME 
删除容器:docker rm CONTAINER_ID / CONTAINER_NAME 强制删除容器:docker rmi -f CONTAINER_ID / CONTAINER_NAME 
查看容器详细信息:docker inspect CONTAINER_ID /
CONTAINER_NAME 
进入容器:docker exec -it 0ad5d7b2c3a4 /bin/bash
从宿主机复制到容器:docker cp 宿主机本地路径 容器名字/ID:容器路径 
docker cp /root/123.txt mycentos:/home/   
从容器复制到宿主机:docker cp 容器名字/ID:容器路径 宿主机本地路径 
docker cp mycentos:/home/456.txt /root     
宿主机文件夹挂载到容器里:docker run -itd -v 宿主机路径:容器路径 镜像ID 
docker run -itd -v /root/xdclass/:/home centos:7
  1. Commit构建自定义镜像
启动并进入容器:
docker run -it centos:7 /bin/bash 

在/home路径下创建自己的文件夹:
mkdir /home/liuxiaozhao

安装ifconfig命令:
yum -y install net-tools 

重启容器,查看容器的liuxiaozhao文件夹还在不在:
docker restart 67862569d4f7 

删除容器,再重新启动一个容器进入查看有没有liuxiaozhao文件夹(此时启动的是新的容器,没有之前安装的包和文件夹)
docker rm 67862569d4f7 
docker run -it centos:7 /bin/bash 

构建镜像,重新创建文件夹和安装包:
mkdir /home/liuxiaozhao
yum -y install net-tools 
docker commit 4eb9d14ebb18 mycentos:7 
docker commit -a "XD" -m "mkdir /home/xdclass" 4eb9d14ebb18 mcentos:7 
      -a:标注作者 
      -m:说明注释 

查看详细信息:
docker inspect 180176be1b4c 

启动容器:
docker run -itd 180176be1b4c /bin/bash 

进入容器查看:
docker exec -it 2a4d38eca64f /bin/bash 
  1. dockerfile构建镜像

3.1 Dockerfile

# this is a dockerfile 
FROM centos:7 #指定基础镜像
MAINTAINER Fiona #构建人的信息
RUN echo "正在构建镜像!!!"  #构建时输出的信息
WORKDIR /home/liuxiaozhao  #在容器中的工作路径,自动创建
COPY 123.txt /home/liuxiaozhao #将宿主机当前路径的txt文件拷贝到容器的路径里
RUN yum install -y net-tools #运行命令,安装工具包在容器内
构建(.表示当前路径):
docker build -t mycentos:v2 . 
查看:
docker images 

3.2 常用命令

FROM 基于哪个镜像 
MAINTAINER 注明作者 
COPY 复制文件进入镜像(只能用相对路径,不能用绝对路径) 
ADD 复制文件进入镜像(假如文件是.tar.gz文件会解压) WORKDIR: 指定工作目录,假如路径不存在会创建路径 
ENV 设置环境变量 
EXPOSE 暴露容器端口 
RUN  在构建镜像的时候执行,作用于镜像层面 
ENTRYPOINT 在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条 
CMD 在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条 容器启动后执行默认的命令或者参数,允许被修改 

命令格式: 
shell命令格式:
RUN yum install -y net-tools 
exec命令格式:
RUN [ "yum","install" ,"-y" ,"net-tools"]

3.3 实战 DockerFile构建Java网站镜像
本地配置jdk

tar -xf jdk-8u211-linux-x64.tar.gz #解压安装包

#放在profile文件里
export JAVA_HOME=/usr/local/jdk  #本地安装路径
export JRE_HOME=$JAVA_HOME/jre 
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH 
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

vi /etc/profile #配置环境变量
source /etc/profile 
java -version 

DockerFile

FROM centos:7 
ADD jdk-8u211-linux-x64.tar.gz /usr/local  #会自动解压并复制到容器中指定的文件夹
RUN mv /usr/local/jdk1.8.0_211 /usr/local/jdk #更改名字
ENV JAVA_HOME=/usr/local/jdk #在容器中配置环境变量
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH 
ENV PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH 
ADD apache-tomcat-8.5.35.tar.gz /usr/local 
RUN  mv /usr/local/apache-tomcat-8.5.35  /usr/local/tomcat 
EXPOSE 8080 
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]
docker build -t mycentos:jdk .

3.4 DockerFile构建nginx镜像

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容