3、Docker基础

一、docker

1、docker基本命令

docker version  查看docker版本
docker info     查看docker详细信息
docker --help   查看docker命令

2、镜像命令

Usage: docker [OPTIONS] COMMAND

[root@localhost ~]# docker images  #列出本地镜像
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        add       206e386c25f3   8 hours ago    134MB
nginx        user      e5abc3364a3c   8 hours ago    134MB
<none>       <none>    7661e32369e1   8 hours ago    134MB
golang       latest    8735189b1527   25 hours ago   941MB
nginx        index     dd34e67e3371   44 hours ago   133MB
nginx        latest    dd34e67e3371   44 hours ago   133MB

PEPOSITORY:镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一个仓库源可以有多个TAG,表示这个仓库源的不同版本,我们使用REPOSITORY:TAG来定义不同的镜像。如果不指定一个镜像的版本标签,例如只使用tomcat,docker将默认使用tomcat:latest镜像

docker images -a        列出本地所有的镜像
docker images -p        只显示镜像ID
docker images --digests 显示镜像的摘要信息
docker images --no-trunc显示完整的镜像信息

---------------------------------------------------------------------------------

[root@localhost ~]# docker search tomcat  #从docker镜像仓库搜寻镜像
NAME                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
tomcat                        Apache Tomcat is an open source implementati…   3097      [OK]       
tomee                         Apache TomEE is an all-Apache Java EE certif…   91        [OK]       
dordoka/tomcat                Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base…   57                   [OK]

STARS:关注度
docker search -s 30 tomcat      从Docker Hub上查找关注度大于30的tomcat镜像
docker pull tomcat              从Docker Hub上下载tomcat镜像。等价于:docker pull tomcat:latest
docker commit -m "message" -a "auditor" 容器ID 要创建的目标镜像名称:[标签名]提交容器使之成为一个新的镜像。
如:docker commit -m "新的tomcat" -a "lizq" f9e29e8455a5 mytomcat:1.2
docker rmi hello-world              从Docker中删除hello-world镜像
docker rmi -f hello-world           从Docker中强制删除hello-world镜像
docker rmi -f hello-world nginx     从Docker中强制删除hello-world镜像和nginx镜像
docker rmi -f $(docker images -p)   通过docker images -p查询到的镜像ID来删除所有镜像

3、容器命令

docker run [OPTIONS] IMAGE根据镜像新建并启动容器。IMAGE是镜像ID或镜像名称
OPTIONS说明:
?--name=“容器新名字”:为容器指定一个名称
?-d:后台运行容器,并返回容器ID,也即启动守护式容器
?-i:以交互模式运行容器,通常与-t同时使用
?-t:为容器重新分配一个伪输入终端,通常与-i同时使用
?-P:随机端口映射
?-p:指定端口映射,有以下四种格式:
??ip:hostPort:containerPort
??ip::containerPort
??hostPort:containerPort
??containerPort
??
----------------------------------------------
docker ps列出当前所有正在运行的容器
docker ps -a列出所有的容器
docker ps -l列出最近创建的容器
docker ps -n 3列出最近创建的3个容器
docker ps -q只显示容器ID
docker ps --no-trunc显示当前所有正在运行的容器完整信息
exit退出并停止容器
Ctrl+p+q只退出容器,不停止容器
docker start 容器ID或容器名称启动容器
docker restart 容器ID或容器名称重新启动容器
docker stop容器ID或容器名称停止容器
docker kill 容器ID或容器名称强制停止容器
docker rm 容器ID或容器名称删除容器
docker rm -f 容器ID或容器名称强制删除容器
docker rm -f $(docker ps -a -q)删除多个容器
docker logs -f -t --since --tail 容器ID或容器名称查看容器日志
如:docker logs -f -t --since=”2018-09-10” --tail=10 f9e29e8455a5
?-f : 查看实时日志
?-t : 查看日志产生的日期
?--since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志
?--tail=10 : 查看最后的10条日志
docker top 容器ID或容器名称查看容器内运行的进程
docker inspect 容器ID或容器名称查看容器内部细节
docker attach 容器ID进到容器内
docker exec 容器ID进到容器内
docker cp 容器ID:容器内的文件路径 宿主机路径从容器内拷贝文件到宿主机.

4、Dockerfile

CMD和ENTRYPIOINT 必须要有一个

CMD可以被覆盖,如果有ENTRYPIOINT的话,CMD就是ENTRYPIOINT的参数。

dockerfile的ENTRYPIOINT 对应k8s的yaml文件的COMMAND,CMD对应ar

说明:
FROM:继承基础镜像
MAINTAINER:镜像制作作者信息
RUN:用来执行shell命令
EXPOSE:暴露端口号
CMD:启动容器默认执行的命令
ENTRYPOINT:启动容器真正执行的命令
VOLUME:创建挂载点
ENV:配置环境变量
ADD:复制文件到容器
COPY:复制文件到容器
WORKDIR:设置容器的工作目录
USER:容器使用的用户

FROM centos:8  #初始镜像,
LABEL maintainer="test dockerfile"  #打标签
LABEL test=dockerfile
RUN useradd dot  #docker build时运行的命令
RUN mkdir /opt/dot
CMD [ "sh", "-c", "echo 1"] #在启动docker时运行,如docker run
#RUN useradd dot && /opt/dot
FROM centos:8

LABEL maintainer="test dockerfile"
LABEL test=dockerfile

ENV test_env1 env1
ENV test_env2 env2
RUN useradd dot
RUN mkdir /opt/dot

#ENTRYPOINT ["echo"]
ENV env1=test1 env2=test2  #设置环境变量

ADD ./index.tar.gz /opt/    #将宿主机的文件,拷贝到容器内并会自动解压包
COPY ./index.tar.gz /opt/dot/  #将宿主机的文件拷贝到容器,但是不会解压。需要注意的是,宿主机都要采用相对路径
WORKDIR /opt/dot   #设置容器内程序的工作目录
USER 1000   #指定使用的用户
CMD pwd ; ls
#RUN useradd dot && /opt/dot
#分部制作镜像可以大大减小镜像的体积
# build step
FROM golang:1.14.4-alpine as builder
WORKDIR /opt

COPY main.go /opt

RUN go build /opt/main.go 

CMD "./main"

# create real app image

FROM alpine:3.8  #将上面编译好的文件拷贝到新镜像,通俗理解过上面的过程是为了编译镜像,这一个from才是制作真正的镜像

COPY --from=builder /opt/main /  #builder是FROM golang:1.14.4-alpine过程的别名

CMD "./opt/main"

3、Docker基础

上一篇:Hotchips 33 学习:Intel 数据中心计算卡Ponte Vecchio


下一篇:mysql连接失败解决方法 ERROR 1045 (28000)