Docker 安装
https://blog.csdn.net/u014069688/article/details/100532774 针对CENTOS7
学用命令
https://www.docker.org.cn/dockerppt/106.html
centos7 安装方法 安装文档
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
打开连接 得到自己的专有镜像加速服务器地址及安装方法
常用命令
Docker version
Docker info
Docker --help
Docker images 查看本地仓库
Docker 仓库源地址 要不然安装特别不顺利
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
完成之后还要进行一个更新YUM软件包索引 因为已经更改了REPO
Docker search tomcat 去DOCKER HUB 搜索镜像 查看信息
Docker rmi 删除镜像 删除多个 删除全部$(docker images -qa)
运行容器
Docker run -it centos
Docker run -it --name centos1 centos
Docker ps 列出正在运行的容器
Docker ps -a 列出所有的容器
退出当前容器exit 关闭并退出 ctrl P q 不停止退出
Docker start docker restart docker stop慢慢停 docker kill 强关
删除已停止的容器
Docker rm 如果是正在运行的加 -f
$(docker ps -lq) 就是取他下面的值
Docker rm 删除容器
Docker run -d 容器 如果没 有任务就自动退了 机制问题
解决办法
docker run -d centos /bin/sh -c "while true;do echo hello;sleep 2;done"
Docker logs 容器ID 可以查看到刚才打印的HELLO ZZYY
Docker top 容器ID 查看容器进程
Docker inspect 查看容器细节
Docker attach 容器ID 进入到容器
Docker exec 直接在外面执行容器内的命令
docker exec -t $(docker ps -lq) ls -l /tmp
docker exec -t $(docker ps -lq) ls -l /tmp
docker cp a3c97d761e26:/tmp/a.txt /root/ 复制文件到宿主机
Docker commit -m=”提交的描述信息” -a=”作者” 容器ID要创建的目标镜像名:[标签名]
Docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
Dockerfile
新建一个DOCKERFILE文件
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished, success1"
CMD /bin/bash
Docker build -f /mydocker/dockerfile -t xiaoxu/centos -f 要用以下文件 -t类似命名空间
继承卷 就是以一个容器为父容器 再开的容器继承这个容器的卷信息
docker run -it --name xiaoxu22 --volumes-from xiaoxu xiaoxu/centos
Dockerfile 文件要点
步骤1手动编写 一个DOCKERFILE文件,当然,必须要符合 FILE 的规范
步骤2有这个文件 后,直接 DOCKER BUILD命令执行,获得一个自定义的镜像
步骤3 run
基础知识
1:每条保留字指令都必须是大写,而且必须 跟一个参数
2:指令按照从上到下,顺序执行
3:#表示注释
4:每条指令都 会创建一个新的镜像层,并对镜像提交
流程
1 docker 从基础镜像运行一个容器
2 执行一条指令并对容器作出修改
3 执行类似DOCKER COMMIT的操作提交一个新的镜像层
4 DOCKER再基于刚提交的镜像运行一个新容器
5 执行DOCKERFILE中的下一条指令直到所有指令都执行完成
保留字的作用
FROM 基础镜像,当前镜像是基于哪个镜像
MAINTAINER 镜像维护都 的名字和邮箱
RUN 容器创建时需要执行的命令
EXPOSE 当前容器对外暴露出的端口
WORKDIR 指定一个落脚点
ENV 设置环境变量
ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压 TAR压缩包
COPY 只是拷贝
VOLUME 容器数据卷,用于数据保存和持久化工作
CMD 指定一个容器启动时要运行的命令,DOCKERFILE中可以有多个CMD 指令,但只有最后一个生效,CMD会被DOCKER RUN之后的参数替 换
ENTRYPOINT 和CMD基本一样,有点倾向于追加
ONBUILD 可以在被继承的时候触发某些操作
Dockerfile举例
FROM CENTOS CENTOS是本地镜像名
MAINTAINER ZZZYYY<275943182@QQ.COM> 作者信息
ENV MYPATH /usr/local 设置环境变量
WORKDIR $MYPATH 设置工作目录 ,落脚点
RUN yum -y install vim 把VIM安装进镜像里
RUN yum -y install net-tools 把IFCONFIG安装进镜像里
EXPOSE 80 对外暴露80端口
CMD echo $MYPATH 进入镜像先执行显示MYPATH变量
CMD echo “success”
CMD /bin/bash 运行指定程序一般只有最后一个CMD被执行
Docker history mycentos 查看历史
docker run tomcat:8.5.32 ls -l 这样TOMCAT就不会执行了,因为在最后用LS -L覆盖了
举例
FROM centos
ENTRYPOINT ["curl","http://www.baidu.com"]
如果用CMD不能给CURL加参数 但是我们用了ENTRYPOINT就可以加-I的参数
Docker push 到阿里云
需要先COMMIT成本地的一个镜像
Docker commit -a zzyy -m “new mycentos 1.4 from 1.3” [id] mycentos:1.4.1
然后在自己的阿里去里面建立一个仓库
$ sudo docker login --username=xpf22@126.com registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/blockhead/mycentos:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/blockhead/mycentos:[镜像版本号]
无法编辑文件DOCKER 可以换源装VIM
mv /etc/apt/sources.list /etc/apt/sources.list.bak cat <<EOF >/etc/apt/sources.list deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free EOF apt update apt install vim mv /etc/apt/sources.list.bak /etc/apt/sources.list