Docker学习与入门(一)

Docker 原理理解
Docker类似于一个沙箱的隔离环境,方便各种配置及第三方库环境的打包及在新机器上快速部署(暂时理解为原机器的代码及所需环境压缩,再在新机器上解压)。
Docker分为Image镜像和容器Container,原始机器制作image, 基础的image(如Ubuntu, Nginx等)也可从Docker Hub中央仓库中下载,
Docker Container: 一个运行中的docker image, 相当于image最上层加上一层‘read-write’ 层,一旦镜像启动,docker便成了容器container.在这里插入图片描述
Docker工作流程示意:
在这里插入图片描述
Docker Linux常用指令:

Systemctl start docker     #启动docker服务
docker rmi 镜像名   #删除制定docker镜像
Systemctl restart docker  #重启docker
dokcer start [Container ID或Container Name] 容器ID或容器名
docker stop $(docker ps -aq)   # 停止所有正在运行的容器
docker rm $(docker ps -aq)    # 删除所有容器
docker rmi $(docker images -aq)  # 删除所有镜像 (先删容器,再删镜像)
docker ps -a 查看所有正在运行及停止的容器container
docker exec -it <container_id> /bin/bash # 进入正在运行的docker container中
docker build: 配合DockerFile文件创建镜像
docker commit: 从更改的docker容器中创建一个新的镜像
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH  将文件从宿主机复制到容器内

DockerFile制作示例:


``
# 从python:3.10-slim基础镜像导入
FROM python:3.10-slim
# 容器的工作目录设置
WORKDIR /home/zyd/backend
# 拷贝项目根目录下的文件及其他依赖的文件夹,包括第三方库oracle, python扩展库安装文件requirements.txt
COPY blueprints /home/zyd/backend/blueprints
COPY model /home/zyd/backend/model
COPY tools /home/zyd/backend/tools
COPY app.py /home/zyd/backend/app.py
COPY exts.py /home/zyd/backend/exts.py
COPY oracle /opt
COPY requirements.txt /home/zyd/backend/requirements.txt
# 运行linux环境更新并安装libaio1库(CentOS等其他Linux发行版可能叫lib-dev库,功能是并发处理数据库IO)
RUN apt-get update -y && apt-get install libaio1
# ENV设置环境变量,使应用程序能找到第三方库,这里是oracle client库
ENV ORACLE_HOME=/opt/oracle/instantclient_21_12
ENV TNS_ADMIN=$ORACLE_HOME/network/admin
ENV NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
ENV NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
ENV LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
ENV PATH=$ORACLE_HOME:$PATH
# pip安装项目所需的python第三方库
RUN pip3 install -r /home/zyd/requirements.txt -I https://pypi.tuna.tsinghua.edu.cn/simple/
# 项目运行的入口命令
CMD ["python3", "/home/zyd/backend/app.py"]

完成DockerFile文件后,就可以在VM或虚拟机上安装docker linux版并建立镜像和容器了。


Docker安装和启用步骤


1.	yum install -y docker-ce, 从docker hub中拉取基础镜像,如部署Python程序, docker pull python:3.9.2 (最好使用源码安装python)

2.	准备Dockerfile,  Dockerfile 就是将我们在文件中书写的构建指令,一层一层从 FROM 指定的基础镜像使用临时容器过渡,逐层叠加起来最终生成目标镜像。 在封装Dockerfile时可能会遇到The command '/bin/sh -c pip install -r /home/test/0108/requirements.txt -i https://mirrors.aliyun.com/pypi/simple' returned a non-zero code: 2报错

3.		Docker build建立本地镜像  docker build -t python/test:v1 .

(这里镜像名:版本号为python/test:v1)

4.	Docker run 创建容器 docker run --rm -it python/test:v1

5.	docker保存镜像: 通过镜像ID导出镜像到宿主机

    $ docker save -o coredns.tar k8s.gcr.io/coredns:1.3.1
6.	新机器上导入镜像
    $ docker load < coredns.tar >

:python项目打包时,需先制造python所需安装的第三方库文档requirements.txt, 再在DockerFile中写入指令 pip -r install requirements.txt
制作requirements.txt文件和Dockerfile文件
1、 先安装pipreqs库 pip install pipreqs
2、 然后代码如下:这里./demo是项目的文件夹
Pipreqs ./demo –encoding=utf-8
3、生成的requirements.txt

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值