我是 docker 的新手,这只是一个令人着迷的工具。然而,我无法理解其中的一件事。简单的 Dockerfile 通常以操作系统名称和版本开头,例如:
FROM ubuntu:xenial
....
Run Code Online (Sandbox Code Playgroud)
但是哪个 Linux 操作系统将用于 Dockerfile 之类的
FROM perl
....
Run Code Online (Sandbox Code Playgroud)
或者
FROM python:3.6
....
Run Code Online (Sandbox Code Playgroud)
当然,我可以通过从此映像运行容器并打印操作系统信息来找到这一点,例如:
docker run -it --rm perl bash
# cat /etc/*-release
Run Code Online (Sandbox Code Playgroud)
或者
docker run -it --rm python:3.6 bash
# cat /etc/*-release
Run Code Online (Sandbox Code Playgroud)
顺便说一句,在这两种情况下,操作系统都是“Debian GNU/Linux 10 (buster)”。
所以,我的问题是:
如何找出将为特定 docker 映像运行哪个操作系统,而不实际从中创建 docker 容器(该docker inspect
命令不提供此信息 docker inspect perl | grep -i Debian
:)
如何更改现有 docker 映像的操作系统类型。例如,我有一个使用 Ubuntu 14.04 的映像,我想将其更改为 Ubuntu 18.04。
感谢您的帮助:)
表
商店(100,000行):id(pk),name,lat,lng,...
store_items(9,000,000行):store_id(fk),item_id(fk)
items(200,000行):id(pk),name,...
item_words(1,000,000行):item_id(fk),word_id(fk)
单词(50,000行):id(pk),单词VARCHAR(255)
注意:所有id都是整数.
========
索引
CREATE UNIQUE INDEX storeitems_storeid_itemid_i ON store_items(store_id,item_id);
CREATE UNIQUE INDEX itemwords_wordid_itemid_i ON item_words(word_id,item_id);
CREATE UNIQUE INDEX words_word_i ON words(word);
注意:我更喜欢多列索引(storeitems_storeid_itemid_i和itemwords_wordid_itemid_i),因为:http://www.mysqlperformanceblog.com/2008/08/22/multiple-column-index-vs-multiple-indexes/
select s.name, s.lat, s.lng, i.name
from words w, item_words iw, items i, store_items si, stores s
where iw.word_id=w.id
and i.id=iw.item_id
and si.item_id=i.id
and s.id=si.store_id
and w.word='MILK';
Run Code Online (Sandbox Code Playgroud)
explain $QUERY$
+----+-------------+-------+--------+-------------------------------------------------------+-----------------------------+---------+-----------------------------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len …
Run Code Online (Sandbox Code Playgroud)