Docker的使用

Dockerfile

Dockerfile是Docker构建镜像的文本文件,常用的指令如下,其中错误的指令会被忽略

常用的指令:
FROM,提供base镜像

ENV,k=v设置容器内环境变量,后续可通过$k引用

COPY,COPY <src> <dest>

RUN,分为两种格式:
1.RUN <command>(shell格式,推荐)
2.RUN [“command”, “param1”, “param2”](exec格式)
exec格式不会在shell中执行,Docker会解析为JSON数组,所以要满足JSON格式双引号,但是却无法使用之前设置的ENV
CMD,CMD为容器运行时执行的默认命令,推荐exec格式,可以有多个CMD

EXPOSE,EXPOSE PORT1 PORT2指定容器暴露端口

ADD,ADD <src> <dest> ,其中src支持网络URL文件资源,src会对归档文件直接解压到dest中

不常用的指令:
ENTYPOINT
VLOUME
USER
WORKDIR
ONBUILD

Dockerfile最佳实践

1.使用-t指定新镜像名称

2.base镜像最好使用官方镜像库中,镜像大小:busybox<debian<centos<ubuntu

3.base镜像要指定tag

4.CMD如果命令较多可以在容器中写入一个脚本,启动命令这样写CMD ["/run.sh"]

5.正确使用ADD与RUN

6.RUN可以通过&&符号来执行多个命令,使用换行符\来换行更加清晰

7.RUN时可以通过wget等将文件下载到缓存镜像层中

8.一个Docker可以写多个FROM,来实现从中间环境中进行构建,产出的数据COPY到一个alpine的镜像的过程

[root@hw-server build]# ls
123.txt  456.txt  789.txt  CentOS7-Base-163.repo  Dockerfile
[root@hw-server build]# docker build -t mytest:v1 .^C
[root@hw-server build]# cat Dockerfile 
FROM centos:7.7.1908 as centos-base

ENV NAME=quguanwen
ENV FROM=cd

COPY *.txt /tmp/

RUN mkdir -p /tmp/test && \
    touch /tmp/test/$NAME.conf && \
    rm -rf /etc/yum.repos.d/* && \
    yum list docker-ce --showduplicates | sort -r | tee /tmp/test/repo.log && \
    echo "/bin/bash" > /tmp/test/run.sh

COPY CentOS7-Base-163.repo /etc/yum.repos.d/
RUN yum -y install wget && wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

WORKDIR /tmp/test
FROM nginx:latest
COPY --from=centos-base /tmp/test/* /tmp/
EXPOSE 80 
RUN chmod +x /tmp/run.sh
CMD ["/tmp/run.sh"]

常用命令

1.构建镜像
docker commit [OPTIONS] CONTAINER
docker build -t [REPOSITORY[:TAG]] PATH

2.推拉镜像
docker login(logout) --username=qgwssg registry.cn-hangzhou.aliyuncs.com
docker pull NAME[:TAG|@DIGEST]
docker push NAME[:TAG|@DIGEST]
本地的账号bas64编码存在cat /root/.docker/config.json下

3.获取Docker详情
包括节点运行容器情况,版本,存储,Plugin等等
docker info

4.检查信息
容器的create时间、ID、CMD、State、驱动、Mount、rootfs、network等等
docker inspect containerID
镜像的关联的容器、Os、大小等等与容器类似
docker inspect imageID

5.检查镜像历史操作
docker history imageID
在这里插入图片描述
6.容器宿主机间文件拷贝
docker cp 宿主机文件 containerID:目录
docker cp containerID:目录/文件 宿主机目录

7.容器执行命令
docker exec -it containerID sh|bash
docker exec containerID ls /etc/

8.容器监控日志
docker stats containerID
docker logs --since=10m -f containerID

9.容器状态控制
docker start containerID
docker restart containerID
docker stop containerID
docker rm -f containerID
docker kill containerID

10.镜像分发
docker tag NAME[:TAG|@DIGEST] NAME[:TAG|@DIGEST]
docker save NAME[:TAG|@DIGEST] > nginx.tar
docker load < nginx.tar

11.运行容器(常用)
docker run --name nfs-server -d --restart=always -m 250M --memory-swap 1G
-v /home/nfsdir:/nfs
-e NFS_EXPORT_DIR_1=/nfs
-e NFS_EXPORT_DOMAIN_1=*
-e NFS_EXPORT_OPTIONS_1=rw,insecure,no_subtree_check,no_root_squash,fsid=1
-p 111:111 -p 111:111/udp
-p 2049:2049 -p 2049:2049/udp
-p 32765:32765 -p 32765:32765/udp
-p 32766:32766 -p 32766:32766/udp
-p 32767:32767 -p 32767:32767/udp
fuzzle/docker-nfs-server:latest

(–network=hosts 设置与宿主机同一个network namespaces)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值