一、docker镜像操作
列出镜像列表
我们可以使用 docker images 来列出本地主机上的镜像。
各个选项说明:
-
REPOSITORY:表示镜像的仓库源
-
TAG:镜像的标签
-
IMAGE ID:镜像ID
-
CREATED:镜像创建时间
-
SIZE:镜像大小
查找镜像
我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。我们可以通过 docker search xxx 命令搜索 httpd 来寻找适合我们的镜像。
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建。
下载镜像
我们决定使用上图中的 httpd 官方版本的镜像,使用命令 docker pull xxx来下载镜像。
删除镜像
首先我们用docker images 查看当前有哪些镜像:
如果我们想删除镜像httpd,则使用docker rmi xxx命令:
二、docker容器操作
创建容器
首先我们先拉取一个镜像
docker pull training/webapp
然后我们用刚拉取的镜像创建并启动一个容器(docker run 镜像名 ----创建并启动容器)
docker run -d -P --name pydemo training/webapp python app.py
参数说明:
- -d: 后台启动。
- -P: 随机映射端口(后面会讲)。
- --name:给容器起别名
- training/webapp: training/webapp 镜像。
- python app.py:容器启动后执行的命令,运行
app.py
Python 脚本
总结来说,此命令会基于 training/webapp
镜像创建一个容器,该容器将在后台运行,并自动映射端口。这个容器会被命名为 pydemo
,其主要工作是执行 app.py
Python 脚本来启动Web应用程序。
- CONTAINER ID:
caa3f50fd8aa
- 容器的唯一标识符。 - IMAGE:
training/webapp
- 启动此容器所用的基础镜像名称。 - COMMAND:
"python app.py"
- 启动容器时执行的命令,这里是运行名为app.py
的Python脚本。 - CREATED:
About an hour ago
- 容器创建时间,距离查询时大约一小时前。 - STATUS:
Up 6 minutes
- 容器当前状态,已运行6分钟。 - PORTS:
0.0.0.0:32772->5000/tcp
- 宿主机的32772端口被映射到容器的5000端口(TCP协议),可以从任意IP地址访问。:::32771->5000/tcp
- 宿主机的IPv6任意地址上的32771端口被映射到容器的5000端口(TCP协议),支持IPv6访问。
- NAMES:
pydemo
- 容器的自定义名称。
查看所有容器
使用命令docker ps -a查看所有的容器:
停止容器
使用命令docker stop <容器 ID>停止一个正在运行的容器:
启动已停止运行的容器
使用命令docker start <容器 ID> 启动一个已停止的容器:
删除容器
删除容器使用 docker rm 命令:
网络端口映射
前面我们执行了命令docker run -d -P --name pydemo training/webapp python app.py创建了一个 python 应用的容器。这里我们是携带了参数-P来运行,使用docker ps命令我们可以看到容器端口 5000 绑定主机端口 32772
我们也可以使用 -p 标识来指定容器端口绑定到主机端口。
两种方式的区别是(大写P和小写p):
- -P :是容器内部端口随机映射到主机的端口。
- -p : 是容器内部端口绑定到指定的主机端口。
docker run -d -p 5000:5000 training/webapp python app.py
三、docker仓库操作
注册
在 https://hub.docker.com 免费注册一个 Docker 账号。
登录和退出
登录需要输入用户名和密码,登录成功后,我们就可以从 docker hub 上拉取自己账号下的全部镜像。
登录
docker login
退出
docker logout
推送镜像到本地仓库
用户登录后,可以通过 docker push 命令将自己的镜像推送到 Docker Hub。
以下命令中的 username 请替换为你的 Docker 账号用户名。
$ docker tag ubuntu:18.04 username/ubuntu:18.04
$ docker image lsREPOSITORY TAG IMAGE ID CREATED ...
ubuntu 18.04 275d79972a86 6 days ago ...
username/ubuntu 18.04 275d79972a86 6 days ago ...
$ docker push username/ubuntu:18.04
$ docker search username/ubuntuNAME DESCRIPTION STARS OFFICIAL AUTOMATED
username/ubuntu