Docker使用

安装

Support :Mac with Intel chip, Mac with Apple chip, Windows, Linux

20220503205841

image.png
image.png

image.png

教程

简明教程
Docker Cheat Sheet

使用

示例

功能:程序返回任意一部电影。按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中执行,而不会改变当前的环境。

如果使用本地环境,则由于包安装不完全,可能出现
20220503172208

而如果使用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存在时强覆盖

列出所有的容器 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

   转载规则


《Docker使用》 M 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
第三章:如何解决括号相关的题 第三章:如何解决括号相关的题
labuladong如何解决括号相关的问题 20. 有效的括号如果当前是左括号,则入栈如果当前是右括号,且栈不为空、栈顶是与其匹配的左括号,则出栈 class Solution(object): def isValid(self,
2022-10-04
下一篇 
title: DFS算法秒杀五道岛屿问题top: falsecover: falsetoc: truemathjax: truedate: 2021-10-18 17:43:22password:summary:tags: labulad
2021-10-19
  目录