浅谈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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

相关推荐