docker知识点归纳

菜鸟教程:Docker 容器使用 | 菜鸟教程

0手动启动docker(centos7):

systemctl start docker

systemctl status docker

#手动安装

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce -y
systemctl status docker
systemctl start docker
systemctl status docker

1 一键安装docker脚本

#!/bin/bash
#判断命令是否执行成功

successOf(){
if [ $? -ne 0 ];
then
    echo "faild"
    return
else
    echo " "
    return 1
fi
}
echo "正在执行安装程序"
#创建或清空dockerWithPortainerSetup.log
echo > dockerSetup.log
#安装需要的软件包  yum-util 提供yum-config-manager功能
yum install -y yum-utils device-mapper-persistDepotent-data lvm2 >> dockerSetup.log
successOf
echo  "---------------->yum-config-manager依赖执行成功<------------------"
#设置docker的阿里仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo >> dockerSetup.log
successOf
echo  "---------------->设置Docker的阿里仓库成功<------------------"
#查看docker版本,选择特定版本安装
yum list docker-ce --showduplicates | sort -r  >> dockerSetup.log
successOf
echo  "---------------->选择特定版本安装,默认Docker-ce-18.03.1.ce<------------------"
#安装docker  默认的是docker-ce-18.03.1
yum install docker-ce-18.03.1.ce   -y  >> dockerSetup.log
successOf
echo  "---------------->Docker-ce-18.03.1安装成功<------------------"
#启动docker
systemctl start docker  >> dockerSetup.log
successOf
echo  "---------------->Docker安装成功<------------------"
#加入开机自启动
systemctl enable  docker >> dockerSetup.log
successOf

#查看docker版本
docker version
successOf

#安装成功
echo  "恭喜你,安装成功"

列出docker 安装包:

rpm -qa |grep docker

卸载DOCKER服务:

yum remove docker-ce(版本号)

再查找docker文件,找到了就删除。eg:rm -rf /var/lib/docker

2 从docker官方仓库中拉取镜像:

docker image pull :

eg:docker image pull ubuntu:latest

删除镜像:

docker image rm 或者docker rm -rf xxxx

运行docker出错,查看docker的启动日志:

journalctl -u docker.service

2.1 列出镜像

docker images(docker image ls)

2.2 为镜像添加标签

docker tag centos:latest mycentos:latest
会创建一个ID一摸一样,标签不一样的docker镜像

2.3 docker inspect 获取镜像的详细信息

docker inspect 镜像名

2.4删除镜像

docker rmi 镜像名:标签
有多个标签只是删除了这个标签而已,镜像文件任然在。只有一个标签的话 就是删除了这个镜像文件。
同一镜像文件,多个标签,强行删除的话 使用:docker rmi -f xxx参数

3创建镜像

3.1 基于已有镜像的容器创建新的镜像

docker commit命令docker commit
eg:docker commit -m “add a new file” -a “ma” 1159e9859a21(容器ID) cetnos:latest
会创建一个基于1159e9859a21 新的镜像
在这里插入图片描述

3.2基于本地模板导入镜像

docker import xx.tar 容器名

3.3存出和载入镜像(docker save docker load)

存出:dokcer save -o xx.tar centos:latestsave
载入:docker load --input xxx.tarload
上传镜像到docker hub
push前先修改标签:docker tag openjdk:latest mw123a456/myregistory:latest
然后再push:docker push mw123a456/myregistory:latest
注:mw123a456这是docker hub的账号名 ,myregistory这是仓库名

3.4 dockerfile创建镜像

FROM centos:7
#RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html
MAINTAINER ma<1359634214@qq.com>

ENV MYPATH /MNT
WORKDIR $MYPATH

RUN yum -y install vim

RUN yum -y install net-tools



EXPOSE 80


CMD echo $MYPATH
CMD echo "---end--"
CMD /bin/bash

dockerfile
dockerfile 的命令摘要

FROM- 镜像从那里来

MAINTAINER- 镜像维护者信息

RUN- 构建镜像执行的命令,每一次RUN都会构建一层

CMD- 容器启动的命令,如果有多个则以最后一个为准,也可以为ENTRYPOINT提供参数

VOLUME- 定义数据卷,如果没有定义则使用默认

USER- 指定后续执行的用户组和用户

WORKDIR- 切换当前执行的工作目录

HEALTHCHECH- 健康检测指令

ARG- 变量属性值,但不在容器内部起作用

EXPOSE- 暴露端口

ENV- 变量属性值,容器内部也会起作用

ADD- 添加文件,如果是压缩文件也解压

COPY- 添加文件,以复制的形式

ENTRYPOINT- 容器进入时执行的命令

4容器

4.1 导出容器

docker export -o xx.tar 容器IDexport

4.2导入容器

docker import xxx.tar centos:latest

4.3 进入docker容器:(exec进入容器,退出时,容器不会停止)

docker exec -it xxx /bin/bash

查看docker容器的运行日志

docker logs -f --tail 1000 xxx

查看docker容器的基本信息

docker inspect xx

删除容器

docker rm -f name/id

4.4创建容器指定数据卷(-V)和指定容器与主机映射的端口

docker run -d -p 8971:8971 --name KD-auth \
--log-opt max-size=50m --log-opt max-file=3 \
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro \
-e JAVA_OPTS='-Dfile.encoding=UTF8' -e TZ='GMT+8' \
-v /mnt/apps/new_xxt/app:/app \
-v /mnt/apps/new_xxt/app/log:/log \
openjdk:8-jdk-alpine \
java -jar /app/xxt-auth-0.0.1-SNAPSHOT.jar  --spring.cloud.config.uri=http://172.16.100.40:8001

-d是后台运行,-p是主机的8971映射到容器的8971端口,-v是指定主机的数据卷与容器内的目录互通
也可以映射到指定地址的指定端口
docker run -d -p 127.0.0.1:5000:500 centos:latest

DockerFile

FROM:基础镜像,当前新镜像是基于哪个镜像的

MAINTAINER:镜像维护者的姓名和邮箱地址

RUN:容器构建时需要运行的命令

EXPOSE:当前容器对外暴露出的端口号

WORKDIR:指定在创建容器后,终端默认登录的进来工作目录

ENV:用来在构建镜像过程中设置环境变量,比如:ENV TEMP_DIR /usr/local,那么在调用该环境变量时,就是$TEMP_DIR

ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包

COPY:类似ADD,拷贝文件和目录到镜像中。将从构建上文目录中<源路径>的文件/目录复制到新的一层镜像内的<目标路径>位置

    COPY 源文件路径 目标文件路径
    COPY [“源路径”,”目标路径”]

VOLUME:容器数据卷,用于数据保存和持久化工作

CMD:指定一个容器启动时要运行的命令

    Dockerfile中可以有多个CMD命令,但只有最后一个生效,CMD会被docker run之后的参数替换
    Shell格式:cmd <命令>
    exec格式:CMD [“参数1”,”参数2”,”参数3”,…]

ENTRYPOINT:指定一个容器启动时要运行的命令,ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数

ONBUILD:当构建一个被继承的Dockerfile时运行命令,父镜像在被子类继承后父镜像的onbuild被触发

dockerfile示例

用dockerfile创建一个 tomcat镜像 并启动

FROM centos
MAINTAINER MLW

ADD jdk-20.0.2_linux-x64_bin.tar.gz /usr/local
ADD apache-tomcat-9.0.80.tar.gz  /usr/local

ENV MYPATH  /usr/local
WORKDIR  $MYPATH


ENV JAVA_HOME /usr/local/jdk-20.0.2
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar




EXPOSE 8080

CMD /usr/local/apache-tomcat-9.0.80/bin/startup.sh  && tail -f /usr/local/apache-tomcat-9.0.80/logs/catalina.out

然后 docker build -f dockerfile -t tomcat:1 .

然后docker run -d -p 8080:8080 --name mytomcat tomcat:1

docker网络

docker网络
docker网络2

知识点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值