编程分享Docker-命令记录
郭顺发
docker 命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| # 查看docker版本。 docker -v docker version # 查看docker系统信息 docker info # 搜索镜像 docker search 镜像 # 获取镜像 docker pull 镜像仓库地址 # 上传镜像 docker push 镜像仓库地址 # 查看镜像的创建历史 docker history 镜像仓库地址 # 运行容器 # -name 定义一个容器的名字 # -d 标识是让 docker 容器的后台运行。 # -p 标识通知 docker 将容器内部使用的网络端口映射到我们使用的主机上。 docker run --name nginx -p 8080:80 nginx # 查询容器内部ip地址 docker inspect 容器ID/容器名 | grep IPAddress # 列出容器 -- 仅运行的容器 docker ps # 列出容器 -- 包含停止的容器 docker ps -a # 查看当前本地所有的镜像 docker images # 停止容器 docker stop 容器ID/容器名 # 开始容器 docker start 容器ID/容器名 # 重启容器 docker restart 容器ID/容器名 # 杀掉一个运行中的容器 docker kill -s KILL 容器ID/容器名 # 删除容器 docker rm 容器ID/容器名 # 删除一个或多个容器 docker rm -f xx,xx2 # 删除镜像【顺序:停止镜像里的容器,再删除容器,最后再删除镜像】 docker rmi 镜像id/镜像名 # 列出所有的容器 ID docker ps -aq # 停止所有的容器 docker stop $(docker ps -aq) # 删除所有的容器 docker rm $(docker ps -aq) # 删除所有的镜像 docker rmi $(docker images -q) # 停止并删除指定容器 docker ps -a | grep 容器ID/容器名 | awk '{print $1}' \ | xargs -i docker stop {} | xargs -i docker rm {} # 删除镜像 docker images | grep -E '镜像id/镜像名' | awk '{print $3}' \ | uniq | xargs -I {} docker rmi --force {} # ex: 删除镜像 `nginx:latest` docker images | grep -E 'nginx' | grep 'latest' | awk '{print $3}' \ | uniq | xargs -I {} docker rmi --force {} # 删除所有停止的容器 docker container prune # 删除所有部使用的镜像 docker image prune --force --all docker image prune --f --a # 限制容器内存 -m docker run --name nginx -d -p 8080:80 -m 100m nginx # 查看容器运行内存信息 docker stats nginx # 进入容器 docker exec -it 容器ID/容器名 /bin/bash # 以交互模式启动一个容器,在容器内执行/bin/bash命令 docker run -i -t 容器ID/容器名 /bin/bash # 查看容器日志 -t: 显示时间戳 docker logs -f -t 容器ID/容器名 docker logs -fn10 -t 容器ID/容器名 # 构建镜像 # 用法:docker build -t 镜像名称 . docker build -t docker_demo .
|
2. docker 启动jar包
2.1. 编写dockerFile文件
1 2 3 4 5 6 7 8 9 10 11 12
| # 引用哪个镜像,没有镜像则pullFROM centos:7 # 为Dockerfile中所有RUN、CMD、ENTRYPOINT、COPY和ADD指令设定工作目录WORKDIR /usr # 执行命令(这里创建了一个目录)RUN mkdir /usr/local/java # 和copy一样,复制文件到指定目录,但是copy不能解压,add自动解压ADD jdk-8u111-linux-x64.tar.gz /usr/local/java # 重命名(不知道文件名可以现在宿主机解压后看一下)RUN ln -s /usr/local/java/jdk1.8.0_111 /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 # 创建一个目录RUN mkdir /demo # 将jar包copy到指定目录ADD job.jar /demo/app.jar # 启动命令ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Xmx512m","-Xms512m","/demo/app.jar"]
|
2.2. 下载需要的外部包
这个场景我只用到了jdk。
2.3. 执行dockerFile文件,构建镜像
1
| docker build -t my/demo .
|
注意最后的 . 表示 Dockerfile 文件在当前目录下
my/demo 构建之后镜像名称
2.4. 运行容器
1
| docker run -d --name demo -p 8080:8080 my/demo
|
关于 Docker 镜像的更多信息:
关于 Docker 容器的更多信息:
关于 Docker 的更多信息:
参考文档