我一直在重读Docker文档,试图了解Docker和完整VM之间的区别.它如何设法提供完整的文件系统,隔离的网络环境等,而不是那么重?
为什么将软件部署到Docker映像(如果这是正确的术语)比简单地部署到一致的生产环境更容易?
Docker中的容器和图像有什么区别?在入门Docker教程中,这些术语都被使用,但我不明白其中的区别.
任何人都可以解释一下吗?
在实践中我开始一个容器:
docker run a8asd8f9asdf0
Run Code Online (Sandbox Code Playgroud)
如果是这样的话,那会是什么:
docker start
Run Code Online (Sandbox Code Playgroud)
做?
在手册中说
启动一个或多个已停止的容器
我想删除Docker上的容器,但是当你想要删除时会发生错误
在删除容器之前的下一步,请参阅现有容器的列表
sts@Yudi:~/docker$ sudo docker ps -as
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE
78479ffeba5c ubuntu "/bin/bash" 42 hours ago Exited (0) 42 hours ago sharp_wescoff 81 B (virtual 187.7 MB)
0bd2b54678c7 training/webapp "python app.py" 5 days ago Exited (0) 5 days ago backstabbing_ritchie 0 B (virtual 323.7 MB)
0adbc74a3803 training/webapp "python app.py" 5 days ago Exited (143) 5 days ago drunk_feynman 0 B (virtual 323.7 MB)
Run Code Online (Sandbox Code Playgroud)
我要删除列表,即"training/webapp", 但发生了错误
sts@Yudi:~/docker$ sudo docker rmi training/webapp
Error response from …Run Code Online (Sandbox Code Playgroud) 键入
docker images命令并按RETURN.该命令列出本地系统上的所有映像.你应该docker/whalesay在列表中看到.Run Code Online (Sandbox Code Playgroud)$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker/whalesay latest fb434121fc77 3 hours ago 247 MB hello-world latest 91c95931e552 5 weeks ago 910 B
但第一栏清楚地说"存储库",而不是例如"图像名称".我也注意到在其他人的机器上,因为图像可以有多个标签,所以这个列表通常包含重复的条目 - 每个标签一个.这是一个图像列表,一个存储库列表,一个图像标签组合列表或其他什么?图像和存储库之间有什么区别?
另外,鉴于图像和存储库是不同的东西,我怎么才能列出我的存储库?
这与容器无关.
我知道图像由许多层组成。例如,如果你运行“docker history [Image]”,你可以得到一个id序列,顶部的id与image id相同,其余的id是层ID。
在这种情况下,这些休息层 ID 是否对应于其他一些图像?如果是真的,我可以将图层视为图像吗?
我在docker容器中设置了一个django项目,并且每个东西都按预期工作,除了我在mysql映像中找不到项目数据库.
Dockerfile
FROM python:3
RUN mkdir /django-website
WORKDIR /django-website
COPY . /django-website
RUN pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
泊坞窗,compose.yml
version: '3'
services:
db:
image: mysql:5.7
restart: always
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=mywebsite
- MYSQL_USER=root
- MYSQL_PASSWORD=root
ports:
- '33060:3306'
volumes:
- /var/lib/mysql
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/django-website
ports:
- '8000:8000'
links:
- db
Run Code Online (Sandbox Code Playgroud)
settings.py
DATABASES = {
'default': {
'ENGINE': "django.db.backends.mysql",
'NAME': "mywebsite",
'USER': "root",
'PASSWORD': "root",
'HOST': 'db',
'PORT': '3306',
}
}
Run Code Online (Sandbox Code Playgroud)
我运行迁移,它工作:
docker-compose …Run Code Online (Sandbox Code Playgroud) 好的,所以我是 Docker 的新手并且正在做一些教程,我想删除nginx和mongo图像:
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest be1f31be9a87 12 days ago 109MB
mongo 3.4 598e8cf490a6 12 days ago 361MB
Run Code Online (Sandbox Code Playgroud)
所以我开始nginx:
$ docker image rm nginx
Untagged: nginx:latest
Untagged: nginx@sha256:9ad0746d8f2ea6df3a17ba89eca40b48c47066dfab55a75e08e2b70fc80d929e
Deleted: sha256:be1f31be9a87cc4b8668e6f0fee4efd2b43e5d4f7734c75ac49432175aaa6ef9
Deleted: sha256:7609c40a03b852382a43d79231d9d4ca7661cd1ac9edcb46f78a44fff4ed59ca
Deleted: sha256:a2b6968c4326640dd5e9e22ddf6cebb61ba1a4b79a4ac8d194f93000c5a4c3e2
Deleted: sha256:8b15606a9e3e430cb7ba739fde2fbb3734a19f8a59a825ffa877f9be49059817
Run Code Online (Sandbox Code Playgroud)
过去了吗?
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
mongo 3.4 598e8cf490a6 12 days ago 361MB
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好。现在为mongo:
$ docker image rm mongo
Error: No such …Run Code Online (Sandbox Code Playgroud)