首页 >> 大全

Docker教程2 - 容器的使用和Docker的登录

2023-10-02 大全 28 作者:考证青年

容器()的使用

本篇会介绍如何使用容器,创建一个的容器(),并生成,发布和浏览

官方文档

1. 基本配置,创建和浏览

首先,先创建三个文件,分别是:,.txt,app.py

1.1 文件是当前指定的容器()的配置,内容如下:

# 使用官方Python运行时 - 作为当前的镜像 
FROM python:2.7-slim# 设置工作目录 /app
WORKDIR /app# 拷贝当前目录内容到容器目录/app
ADD . /app# 安装需要的安装包从requirements.txt获取
RUN pip install -r requirements.txt# 在容器(Container)外,使用80端口作为外界访问 
EXPOSE 80# 定义环境变量 
ENV NAME World# 当容器(Container)启动时运行app.py
CMD ["python", "app.py"]

1.2 .txt文件是依赖的库和引用,其中flask是的一个web框架,内容如下:

Flask
Redis

1.3 app.py文件是flask配置一个网站的最基本代码,内容如下:

from flask import Flask
from redis import Redis, RedisError
import os
import socket# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)app = Flask(__name__)@app.route("/")
def hello():try:visits = redis.incr("counter")except RedisError:visits = "cannot connect to Redis, counter disabled"html = "

Hello {name}!

"
\"Hostname: {hostname}
"
\"Visits: {visits}"return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)if __name__ == "__main__":app.run(host='0.0.0.0', port=80)

在命令行()下,运行ls你会看到如下三个文件

$ ls
Dockerfile      app.py          requirements.txt

1.4 生成镜像

运行以下命令,创建一个镜像( image),并且加一个 -t 参数用于设置一个友好的命名

docker build -t friendlyhello .

那你上面创建的镜像在哪里了?答案是:在你的电脑的本地的 image 里,通过以下命令可以查看

$ docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED            
friendlyhello       latest              7554c6a24c1f        About an minute ago  

1.5 运行应用

运行你的应用,映射你电脑机器的4000端口到容器()的80端口,使用参数 -p

docker run -p 4000:80 friendlyhello

然后在你的浏览器上就可以运行 :4000 的网站,效果如下图显示:

这里写图片描述

当然,你也可以使用 curl 来访问了,获取的是页面源码

$ curl http://localhost:4000<h3>Hello World!h3><b>Hostname:b> 8fc990912a14<br/><b>Visits:b> <i>cannot connect to Redis, counter disabledi>

我们还有更好的方式,在后台进程中运行容器(),只需要添加一个 -d 参数,d表示

docker run -d -p 4000:80 friendlyhello

在后进程中运行容器会产生一个很长的 ID(容器ID),但是通过以下命令时,只显示缩写版的 ID,

通过命令行查看,

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED
1fa4ab2cf395        friendlyhello       "python app.py"     28 seconds ago

1.6 停止容器

Ok,相当到这里,大家明白了,使用是超级简单,没有复杂的配置,你就可以创建一个(容器),而且运行的很好,

那现在,我们停掉这个容器吧

docker stop 1fa4ab2cf395

2. 分享你创建的镜像

为了证明的可移植性,我们现在就上传刚才创建的镜像,并且让它可以在任何地方运行。

归根究底,你的最终目的是要发布到生产环境的。

这里有几点你必须要知道的知识,分别是:

a. 一个是一个多个(仓库)的集合

b. 一个是多个(镜像)的集合

c. 默认情况下,是的,如果想要的,请看 这里

2.1 登录

如果你还没有账号,请注册一个,

如果你已经注册完了,现在就开始登录

docker login

然后,我们给刚才创建的镜像(image)打一个tag,tag虽然是可选的,但是我们建议,你给镜像创建一个tag,

因为大部分的时候,我们使用git开发项目,在某一个阶段都做了一个tag,有意义的tag名称,便于标识该版本号。

的镜像的tag也是一样的,它的格式是::tag,创建tag使用命令 tag

例如,命令如下

docker tag friendlyhello victor/first-repo:firsttag1

然后运行 查看所有的镜像,也包括tag在里面

$ docker imagesREPOSITORY                TAG                 IMAGE ID           
friendlyhello             latest              7554c6a24c1f
victor/first-repo         firsttag1           7554c6a24c1f
python                    2.7-slim            451c85955bc2
......

除了使用 也可以使用 image ls

2.2 发布镜像

上传你打完tag的镜像(image)到库

docker push victor/first-repo:firsttag1

这个过程第一次有点慢,以后会好些,取决于你的网速。

一旦上传完毕,你就可以登录 Hub 如果你当前浏览器已经登录了账号,

它会自动跳转到你的仓库面板,反之,你需要登录。

从现在开始,你就可以在任何机器上运行你的应用,通过 fun 命令, 如下:

docker run -p 4000:80 victor/first-repo:firsttag1

如果这个镜像不存在本机上,会自己pull这个库下来

请注意:

   如果你没有在这些命令中指定 ``` :tag ``` 部分,在你生成和运行镜像时,最新的tag ``` :latest ``` 会被默认使用。如果没有指定tag,Docker会使用最新的镜像版本

注意这里总结了一些本篇文章提到的命令,也有一些是额外增加的

docker build -t friendlyname .                  # 使用仓库的Dockerfile文件,创建一个镜像(image)
docker run -p 4000:80 friendlyname              # 运行 "friendlyname" 镜像,并且映射主机端口4000 到容器端口 80
docker run -d -p 4000:80 friendlyname           # 跟上一条一样,但是,此条命令是把friendlyname镜像运行在分离进程中
docker ps                                       # 查看正在运行的所有的容器的列表
docker stop <hash>                              # 优雅的停止运行指定的容器 
docker ps -a                                    # 查看所有的容器列表,包括没有在运行的
docker kill <hash>                              # 强行关闭指定的容器 
docker rm <hash>                                # 从这台机器上移除指定的容器 
docker rm $(docker ps -a -q)                    # 从这台机器上移除所有的容器 
docker images -a                                # 显示这台机器上的所有镜像 
docker rmi                           # 从本机移除指定的镜像
docker rmi $(docker images -q)                  # 从本机移除所有的镜像 
docker login                                    # 使用Docker credentials 登录到CLI会话
docker tag  username/repository:tag      # 给镜像打一个tag,为了可以上传到remote的registry
docker push username/repository:tag             # 上传打完tag的镜像到remote的registry
docker run username/repository:tag              # 从registry运行指定的镜像

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了