linux-----docker
docker简介
|
|
Docker时Docker.Lnc公司开源的一个基于LXC技术之上搭建的Container容器引擎,源代码托管在Github上,基于Go语言并遵从Apache2.0协议开源。
Docker属于Linux容器的一种封装,提供简单易用的容器使用接口。
docker的三大概念
镜像:我们可以理解为系统盘的dvd镜像,轻量级的镜像文件
仓库:存储docker镜像
容器:是基于镜像运行的,容器实例
docker的安装
1.安装docker
yum install docker -y
2.启动docker
systemctl start docker
3.docker加速器下载,以及配置
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io 会生成一个docker配置文件,路径是/etc/docker/daemon.json
4.配置了docker加速器,需要重启docker
systemctl restart docker
docker基本命令
增:
docker pull 镜像名字 #下载镜像
docker run 镜像名字 #运行镜像,产生容易实例
docker run -it 镜像名字 /bin/bash 参数解释: -i 交互式的命令操作 - t 开启一个终端提供访问 /bin/bash 指定shell解释器
docker run -it --rm 94e /bin/bash --rm 运行容器,退出后,删除容器记录
docker run -d centos /bin/sh -c "while true;do echo 好嗨哦,感觉人生到达了巅峰; sleep 1;done"
-d 后台运行
centos 指定镜像文件 /bin/sh 指定shell解释器 -C 指定一个shell语句
删:
docker rm 容器id
docker rm `docker ps -aq` 批量删除容器记录
docker rm -f `docker ps -aq` 强制删除所有的容器记录
docker rmi 镜像id 删除镜像记录
docker rmi `docker images -aq` 批量删除镜像文件
改:
docker tag 镜像id 新的名字 修改docker镜像名,tag标记名
docker run --name myredis 94e /bin/bash
查:
docker image ls 查看docker镜像的命令
docker images #等于上述命令,产看镜像
docker container ls 查看正在运行的容器进程
docker ps 只能查看正在运行的容器
docker ps -a 查看所有的容器记录
docker search centos 查看docker镜像记录
docker logs 容器id 查看容器空间内的日志
docker logs -f 不间断的打印容器内日志信息
docker exec -it 容器id /bin/bash #进入正在运行的容器空间
启动和停止
docker stop 容器id
docker start 容器id
######注意:docker容器必须有后台程序在运行,否则就退出
学习Dockerfile
#制作base image 基础镜像,尽量使用官方的image作为base image FROM scratch #使用base image FROM centos FROM ubuntu:14.04 #带有tag的base image #指定一个基础镜像 LABEL version=“1.0” #容器元信息,帮助信息,Metadata,类似于代码注释 LABEL maintainer=“yc_uuu@163.com" #对于复杂的RUN命令,避免无用的分层,多条命令用反斜线换行,合成一条命令! RUN yum update && yum install -y vim \ Python-dev #反斜线换行 RUN /bin/bash -c "source $HOME/.bashrc;echo $HOME” #run指令是一个万能指令 WORKDIR /root #相当于linux的cd命令,改变目录,尽量使用绝对路径!!!不要用RUN cd WORKDIR /test #如果没有就自动创建 WORKDIR demo #再进入demo文件夹 #ADD是添加文件,从物理机本地,添加到容器空间内 ADD and COPY ADD hello / #把本地文件添加到镜像中,吧本地的hello可执行文件拷贝到镜像的/目录 ADD test.tar.gz /tmp #添加到根目录并解压 #并且ADD指令还有 解压缩的功能 打包一个程序和Dockerfile 1.准备一个flask代码文件 [root@master mydocker]# cat s17-flask.py #coding:utf8 from flask import Flask app=Flask(__name__) @app.route('/') def hello(): return " hello,flask" if __name__=="__main__": app.run(host='0.0.0.0',port=8080) 2.准备构建dockerfile,用于生成镜像 FROM centos #指定一个基础镜像 COPY CentOS-Base.repo /etc/yum.repos.d/ #拷贝本地的yum仓库,到容器空间内 COPY epel.repo /etc/yum.repos.d/ # RUN yum clean all RUN yum install python-setuptools -y RUN easy_install flask COPY s17-flask.py /opt/ WORKDIR /opt EXPOSE 8080 #暴露容器的8080端口,供给物理机去映射访问 CMD ["python","s17-flask.py"] #cmd代表执行命令 3.准备 CentOS-Base.repo epel.repo 4.确保 dockerfiel,flask代码,yum仓库文件,在同一层目录 5.构建镜像 docker build . 6.检查docker镜像文件,是否有自己创建的镜像 7.修改镜像的名字 docket tag 镜像名 新的镜像名 8.运行镜像,生成容器实例 docker run -p 8080:8080 -d 04b 9.检查docker端口映射状态 docker port 容器id 10.访问windows,找到容器内的应用