安装
Support :Mac with Intel chip, Mac with Apple chip, Windows, Linux
教程
使用
示例
功能:程序返回任意一部电影。按y持续返回,按n退出。
python程序和Dockerfile文件内容分别如下:
import random
import requests
from bs4 import BeautifulSoup
# crawl IMDB Top 250 and randomly select a movie
URL = 'http://www.imdb.com/chart/top'
def main():
response = requests.get(URL)
soup = BeautifulSoup(response.text, 'html.parser')
#soup = BeautifulSoup(response.text, 'lxml') # faster
# print(soup.prettify())
movietags = soup.select('td.titleColumn')
inner_movietags = soup.select('td.titleColumn a')
ratingtags = soup.select('td.posterColumn span[name=ir]')
def get_year(movie_tag):
moviesplit = movie_tag.text.split()
year = moviesplit[-1] # last item
return year
years = [get_year(tag) for tag in movietags]
actors_list =[tag['title'] for tag in inner_movietags] # access attribute 'title'
titles = [tag.text for tag in inner_movietags]
ratings = [float(tag['data-value']) for tag in ratingtags] # access attribute 'data-value'
n_movies = len(titles)
while(True):
idx = random.randrange(0, n_movies)
print(f'{titles[idx]} {years[idx]}, Rating: {ratings[idx]:.1f}, Starring: {actors_list[idx]}')
user_input = input('Do you want another movie (y/[n])? ')
if user_input != 'y':
break
if __name__ == '__main__':
main()
FROM python:3.10
ADD main.py .
RUN pip install requests beautifulsoup4
CMD [ "python", "./main.py" ]
使用docker可以和本地环境进行很好的隔离。当前环境中可能没有相关的packages,但是用docker可以确保程序在container中执行,而不会改变当前的环境。
如果使用本地环境,则由于包安装不完全,可能出现
而如果使用docker,则只需要使用Dockerfile构建image,其中Dockerfile中有包的安装命令,并让程序在container中执行即可。
# 给image打标签,所以用-t
docker build -t python-imdb .
# 因为需要通过输入y或n来与终端交互,所以用-it
docker run -it python-imdb
其他
pip install pipreqs
pipreqs . --encoding=utf8 --force
# “.” 指的是将导出依赖包的文件放在当前目录下
# “--encoding=utf8” 指的是存放文件的编码为utf-8,否则会报错
# “--force” --force 强制执行,当生成目录下的requirements.txt存在时强覆盖
停止、删除所有的docker容器和镜像
列出所有的容器 ID
docker ps -aq
停止所有的容器
docker stop $(docker ps -aq)
删除所有的容器
docker rm $(docker ps -aq)
删除所有的镜像
docker rmi $(docker images -q)
不通过hub,直接分享images (要求相同系统)
如果跨系统,则build image 时进行说明
用docker images 查看当前images
然后:
docker save app:1.0 | gzip | DOCKER_HOST=ssh://user@remotehost docker load
或者分开写:
- docker save [image] -o file.tar
- 用scp 或者 sftp把 tar文件传给其他服务器
- docker load -i file.tar