- 基础操作
查看本地镜像: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
- 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
- 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镜像