Docker 学习笔记
最近项目需要使用Docker,就研究一段时间Docker,以下是接触这两周以来对Docker使用的总结,楼主Docker主要使用环境是Ubuntu,当然其他平台环境也是一样的,操作也是很相似的,命令是在事后回忆手敲的,如有错误,请多多指正
使用Docekr前肯定要先学会安装啦
一、Docker安装
1、windows
坑较多,不如WSL升级等,请参考菜鸟教程,不建议使用windows
2、Ubuntu安装
首先就是更新源
sudo apt-get update
安装依赖
sudo apt-get install ca-certificates curl gnupg lsb-release
安装证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
添加软件源
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
安装Docker及工具
sudo apt-get install docker-ce docker-ce-cli containerd.io sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
启动Docker
启动 systemctl start docker 重启 service docker restart
测试
sudo docker run hello-world
测试第一次需要拉取镜像,比较慢,有点耐心哦~
查看Docker版本 sudo docker version
查看镜像 sudo docker images
查看容器 sudo docker ps
二、镜像加速
阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器,按照其操作就可以了
现阶段Docker配置基本告一段落了,接下来就可以开始使用之旅了
三、学习Docker基本使用
过后再补,可参考菜鸟教程
四、使用Docker打包Python项目
个人认为使用Docker的优点,在于就像编程思路一样,可以引用头文件,进行嵌套使用,也就是说,Docker镜像可以引用现有镜像进行更新迭代
要想进行打包Docker,首要就是要先有python环境,而基础就是先要有平台——Ubuntu镜像
1、基础运行环境配置
首先先拉取Ubuntu镜像(对镜像版本有要求的注意版本拉取)
sudo docker pull ubuntu
接下来就是对镜像进行迭代更新了,首先运行镜像成容器,对其进行更新优化
sudo docker run -it ubuntu
更改软件源(略)以及更新镜像源
apt-get update
安装python环境
过后再补
CTRL+D或exit命令退出当前镜像容器,记录容器ID(6e306ce084bb),提交容器为镜像
docker commit 6e306ce084bb python:3.8
提示 sha256:XXX即为成功一半
2、项目准备
首先先建立python项目,将必要py文件拷贝至单独文件夹内,并touch新建Dockerfile、requirements.txt文件
- Dockerfile 后面根据Dockerfile创建docker镜像,后续将详细讲解该文件
- requirements.txt 该文件描述了python项目的依赖环境
其次,进行编辑Dockerfile配置文件
# 依赖python:3.8镜像 FROM python3.8 # 指定工作空间 WORKDIR /code # 复制本地文件至镜像内 COPY ./docker_python.py /code # 安装python指定依赖包 RUN pip install -r requirements.txt # 设置运行镜像时运行的命令,即运行py文件 # CMD ["python", "./docker_python.py"] 以下两行可用此行代替,新手设置不对,运行可能会出错,楼主亲测 ENTRYPOINT ["python3"] CMD ["/code/docker_python.py"]
编辑python依赖包requirements.txt文件
numpy==1.23.4
py文件内容
import numpy as np a = np.arange(8) print ('原始数组:') print (a) print ('\n') b = a.reshape(4,2) print ('修改后的数组:') print (b) print('Successfully Docker_python Testting!')
构建镜像
sudo docker build -t python_demo:v1 .
- -t 后python_demo:v1为ImagesName:tags
- "." 为构建路径,此为本文件夹
完成后,运行镜像
sudo docker run python_demo:v1
成功运行就大功告成了
五、Docker命令用法
1、从容器里面拷文件到主机
docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径 例如:docker cp -a fe5282e395eb:/demo_ws/ /home/sz/code/
容器ID为 : fe5282e395eb
,查找方法 docker ps -a
2、从宿主机拷文件到容器里面
docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
坑1:
如果运行demo镜像输出内容为:/usr/bin/sh: /usr/bin/sh: cannot execute binary file 或者 /usr/bin/python3: /usr/bin/python3: cannot execute binary file
说明demo运行时指定不明确,将 CMD ["python", "./docker_python.py"] 替换成 ENTRYPOINT ["python3"] CMD ["/code/docker_python.py"] 即可