浅谈Docker之Docker常用命令及Dockerfile基础命令(记录)
一、Docker镜像相关命令
查看本地镜像
docker images
从远程仓库下载镜像
docker pull mysql:5.7
搜索mysql5.7镜像
docker search mysql:5.7
删除镜像
docker rmi mysql:5.7
修改本地镜像名字
docker tag mysql:5.7 mysql:v1
查看镜像的构建历史
docker history mysql:5.7
commit命令构建镜像 docker commit 容器ID 镜像名称:镜像tag
docker commit 3e1267e mysql:v1
build命令构建镜像 docker build -t 镜像名称:镜像tag buildfile路径
docker build -t mysql:v1 .
二、Docker容器相关命令
查看本地正在运行的镜像
docker ps
查看所有镜像
docker ps -a
运行容器
docker run -itd --name=mysql_v1 mysql:5.7
-i:以交互模式运行容器
-t:分配一个伪输入终端
-d:后台运行(daemon的意思)
--name: 指定一个名称,不然会随机分配串字符串
-v:-v /apps:/apps 宿主机路径:容器路径。挂载文件夹到容器中
-p:-p 8080:8080 宿主端口:容器端口。端口映射处理
启动/重启/停止容器
docker start / restart / stop CONTAINER_ID / CONTAINER_NAME
停止所有容器
docker stop $(docker ps -a -q)
-q:会返回容器的CONTAINER_ID
删除容器
docker rm CONTAINER_ID / CONTAINER_NAME
强制删除容器
docker rm -f CONTAINER_ID / CONTAINER_NAME
查看容器的详细情况,如网络信息等
docker inspect CONTAINER_ID / CONTAINER_NAME
进入容器内部
docker exec -it CONTAINER_ID /bin/bash
从宿主机复制文件到容器中
docker cp /apps/docker.txt mysql_v1:/apps/
从宿主机复制文件到容器中
docker cp mysql_v1:/apps/docker_copy.txt /apps
三、Dockerfile基础指令
FROM:基于某个镜像
MAINTAINER:注明作者
WORKDIR:指定工作目录,如果不存在会创建
COPY:复制文件到镜像中,源文件路径使用的是相对路径
ADD:复制文件到镜像中,如果文件是压缩文件tar.gz还会解压
ENV:指定环境变量,类似在linux中编辑/etc/profile的操作
EXPOSE:指定暴露的接口
RUN:构建镜像的时候执行指令,作用于镜像层
ENTRYPOINT:容器启动时执行执行,作用于容器层,如果多条ENTRYPOINT指令,只会执行最后一条
CMD:容器启动时执行执行,作用于容器层,如果多条ENTRYPOINT指令,只会执行最后一条
另外对于RUN、ENTRYPOINT、CMD命令而言有两种命令格式
- Shell格式:<instruction> <command>。例如:yum install wget
- Exec格式:<instruction> ["executable", "param1", "param2", ...]。例如: ["yum", "install", "-y", "wget"]
在这里推荐使用exec命令格式,特别是ENTRYPOINT最好使用exec格式。
因为这样,CMD就体现另外一个功能,
可以为ENTRYPOINT提供额外的默认参数,同时在docker run命令行中 docker run -it [image] params,
使用params动态替换默认参数。
本文作者:hjjay
原文出处:https://www.cnblogs.com/jayhou/p/12319640.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。