Docker容器的学习

1.docker的三大概念

镜像  ,理解为系统盘dvd镜像 ,轻量级的镜像文件          class  
        把运行路飞学诚的应用程序,打包成一个docker镜像 


仓库,存储docker镜像的 

容器 ,是基于镜像运行出的,容器实例 

2.安装及配置

1.安装docker,由于网速问题,选择阿里云的yum源下载 
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

systemctl restart docker     

出现报错 : 打开 /etc/docker/daemon.json  去掉结尾的逗号


3.基本命令的学习


#下载docker镜像
docker pull hello-world
#运行docker镜像,产生容器实例

#运行docker镜像,ubuntu系统
docker run ubuntu  

#交互式的运行ubuntu 容器,进入容器空间内

docker run -it  ubuntu  /bin/bash 
    #参数解释
    -i 交互式的命令操作
    -t 开启一个终端提供访问
    /bin/bash   指定shell解释器
    
#打包构建一个携带vim的centos镜像文件
    1.先运行一个centos基础镜像
    docker run -it centos /bin/bash 
    2.在容器空间内,安装vim
    yum install vim -y 
    3.退出容器空间,提交这个容器,为新的镜像

      退出:exit
      docker commit   1d5698b91178    yuchao163/s17centos-vim
    

docker run -it  --rm  94e  /bin/bash
    --rm  运行容器,退出后,删除容器记录

#给容器记录命名
docker run  --name  myredis 94e  /bin/bash

#后台不间断运行一个 shell语句
docker run -d centos /bin/sh -c "while true;do echo 好嗨哦,感觉人生到达了巅峰; sleep 1;done"
    -d 后台运行 
    centos  指定镜像文件 
    /bin/sh    指定shell解释器
    -C 指定一个shell语句

    


#导出本地的镜像文件
docker save  0fc9d49cb739   > /opt/s17centos.tar.gz
    
#导入镜像文件,    
docker load  <  /opt/s17centos.tar.gz

#删除容器记录

docker rm  容器id 

#批量删除容器记录
docker  rm `docker ps -aq`

#强制删除所有容器记录

docker rm -f  `docker ps -aq`

#删除镜像记录

docker rmi  镜像id 

#批量删除镜像文件
docker rmi `docker images -aq`  

#修改docker镜像名,tag标记名
docker tag  镜像id   新的标记名 


#运行过docker镜像后,会产生容器记录

#差看docker镜像的命令

docker  image ls  
docker  images   #等同于上述命令,查看镜像 


#查看正在运行的容器进程,
docker container ls  
docker ps 

#docker ps只能查看正在运行的容器
docker ps -a  查看所有的容器记录 

#docker容器,必须有后台程序在运行,否则容器就退出

#查询docker镜像记录 

docker search centos 

#查看容器空间内的日志 
docker logs 容器id 

docker logs -f  容器id #不间断打印容器内日志信息

#进入正在运行的容器空间

docker exec -it 容器id   /bin/bash 

#启停docker容器

docker start  容器id 
docker stop  容器id

docker端口映射

docker run -d   -p 4567:5000      training/webapp    #指定宿主机的4567端口,映射到容器的5000端口

-d   后台运行容器

-p  指定映射端口

#进入到这个容器空间
docker exec -it 616(容器id)  /bin/bash 

Dockerfile

#指定一个基础镜像

FROM scratch #制作base image 基础镜像,尽量使用官方的image作为base image
FROM centos #使用base image
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指令还有 解压缩的功能 

WORKDIR /root
ADD hello test/  #进入/root/ 添加hello可执行命令到test目录下,也就是/root/test/hello 一个绝对路径
COPY hello test/  #等同于上述ADD效果

ADD与COPY
   - 优先使用COPY命令
    -ADD除了COPY功能还有解压功能
添加远程文件/目录使用curl或wget

#环境变量,ENV 尽可能使用ENV增加可维护性
ENV MYSQL_VERSION 5.6 #设置一个mysql常量


ENV MYSQL_VERSION 6.7
RUN yum install -y mysql-server=“${MYSQL_VERSION}” 
RUN yum install -y mysql-server=“${MYSQL_VERSION}” 
RUN yum install -y mysql-server=“${MYSQL_VERSION}” 

打包flask程序与dockerfile

1.准备一个flask代码文件
[root@master mydocker]# cat my-flask.py 

#coding:utf8
from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello():
    return " Me 宇宙无敌"
if __name__=="__main__":
    app.run(host='0.0.0.0',port=8080)

2.准备构建dockerfile,用于生成镜像(touch Dockerfile)(必须是大写D)

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,找到容器内的应用

非常好的选择!Docker 是一个开源的容器化平台,可以帮助开发人员更轻松地构建、打包、交付和运行应用程序。学习 Docker 可以让你更好地理解容器化技术,并且在开发和部署应用程序时提供更高的灵活性和可移植性。 以下是一些学习 Docker 的步骤: 1. 安装 Docker:首先,你需要安装 DockerDocker 提供了适用于不同操作系统的安装程序,如 Docker Desktop for Windows 或 Docker Desktop for Mac。你可以访问 Docker 官方网站(https://www.docker.com/)获取详细的安装指南。 2. 学习 Docker 基本概念:在开始使用 Docker 之前,建议先了解一些基本概念,例如镜像(Image)、容器(Container)、仓库(Repository)等。可以阅读 Docker 官方文档或参考一些在线教程和博客来学习这些概念。 3. 创建和运行容器学习如何使用 Docker 创建和运行容器是非常重要的一步。你可以使用 Docker 命令行工具或者 Docker Compose 来创建和管理容器。尝试使用一些基本的命令,如 docker run、docker build 等,来构建和运行容器。 4. 使用 Docker 镜像:Docker 镜像是容器的基础,它包含了应用程序的运行环境和所有依赖项。学习如何使用 Docker Hub 或者其他镜像仓库来获取和使用现有的镜像,以及如何创建自定义的镜像。 5. Docker 网络和存储:学习如何配置 Docker 网络和存储可以帮助你更好地管理容器之间的通信和数据持久化。了解 Docker 网络模式、网络驱动和存储卷等概念,并尝试在容器之间进行通信和数据共享。 6. Docker Compose 和 Swarm:学习如何使用 Docker Compose 和 Docker Swarm 可以帮助你更好地编排和管理多个容器Docker Compose 可以定义和管理多个容器的配置,而 Docker Swarm 则可以将多个 Docker 主机组成一个集群,实现容器的高可用性和负载均衡。 7. 实践项目:尝试在实际项目中应用 Docker,例如将一个现有的应用程序容器化,或者使用 Docker 构建和部署一个完整的应用栈。通过实践,你可以更深入地理解 Docker 的各种用法和场景。 记得不断练习和探索,参考文档和教程可以帮助你更好地理解 Docker 的使用。祝你学习顺利!如果有任何问题,随时向我提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值