docker 的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
docker 学习
 
1. Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。
输出Hello world
 
docker run ubuntu:15.10 /bin/echo "Hello world"
 
以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。
 
 
2.运行交互式的容器
我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力
 
docker run -i -t ubuntu:15.10 /bin/bash
 
 
 
各个参数解析:
 
-t:在新容器内指定一个伪终端或终端。
 
-i:允许你对容器内的标准输入 (STDIN) 进行交互。
 
此时我们已进入一个 ubuntu15.10系统的容器
 
我们尝试在容器中运行命令 cat /proc/version和ls分别查看当前系统的版本信息和当前目录下的文件列表
 
 
我们可以通过运行exit命令或者使用CTRL+D来退出容器。
 
 
 
3. 启动容器(后台模式)
使用以下命令创建一个以进程方式运行的容器
 
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
 
在输出中,我们没有看到期望的"hello world",而是一串长字符
 
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
 
这个长字符串叫做容器ID,对每个容器来说都是唯一的,我们可以通过容器ID来查看对应的容器发生了什么。
 
首先,我们需要确认容器有在运行,可以通过 docker ps 来查看
 
CONTAINER ID:容器ID
 
NAMES:自动分配的容器名称
 
 
4. 在容器内使用docker logs命令,查看容器内的标准输出
根据容器 id查看容器内部的输出
docker logs 2b1b7a428627
根据容器 name查看容器内部的输出
docker logs amazing_cori
 
 
5. 停止容器
 
docker stop 容器ID / 容器名称
 
6. 查看硬件使用率
docker stats
 
7.运行一个web应用
前面我们运行的容器并没有一些什么特别的用处。
 
接下来让我们尝试使用 docker 构建一个 web 应用程序。
 
我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。
 
docker pull training/webapp  # 载入镜像
 
docker run -d -P training/webapp python app.py #运行一个容器
 
参数说明:
 
-d:让容器在后台运行。
 
-P:将容器内部使用的网络端口映射到我们使用的主机上。
 
Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32769 上。
 
这时我们可以通过浏览器访问WEB应用
 
 
我们也可以通过 -p 参数来设置不一样的端口:
 
docker run -d -p 5000:5000 training/webapp python app.py
 
 
容器内部的 5000 端口映射到我们本地主机的 5000 端口上。
 
8.网络端口的快捷方式
通过 docker ps 命令可以查看到容器的端口映射,docker 还提供了另一个快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。
 
上面我们创建的 web 应用容器 ID 为 bf08b7f2cd89 名字为 wizardly_chandrasekhar。
 
我可以使用 docker port bf08b7f2cd89 或 docker port wizardly_chandrasekhar 来查看容器端口的映射情况。
 
docker port bf08b7f2cd89
 
9. 查看 WEB 应用程序日志
docker logs [ID或者名字] 可以查看容器内部的标准输出。
 
docker logs -f 44e91ae4f916
image
 
10 .查看WEB应用程序容器的进程
 
docker top 44e91ae4f916
 
11. 检查 WEB 应用程序
使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。
 
docker inspect 44e91ae4f916
 
12. docker ps -l 查询最后一次创建的容器:
 
13. 移除WEB应用容器
我们可以使用 docker rm 命令来删除不需要的容器
 
删除容器时,容器必须是停止状态,否则会报如下错误
 
Error response from daemon: You cannot remove a running container xx ,Stop the container before attempting removal or force remove
 
14. Docker 镜像使用
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。
 
下面我们来学习:
 
1、管理和使用本地 Docker 主机镜像
2、创建镜像
 
15. 列出镜像列表
我们可以使用 docker images 来列出本地主机上的镜像。
 
 
16. 各个选项说明:
 
REPOSITORY:表示镜像的仓库源
 
TAG:镜像的标签
 
IMAGE ID:镜像ID
 
CREATED:镜像创建时间
 
SIZE:镜像大小
 
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
 
所以,我们如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下:
 
docker run -t -i ubuntu:15.10 /bin/bash
 
如果要使用版本为14.04的ubuntu系统镜像来运行容器时,命令如下:
 
docker run -t -i ubuntu:14.04 /bin/bash
 
 
 
17. 获取一个新的镜像
当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。
 
 
docker pull ubuntu:13.10
 
 
18. 查找镜像
我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个httpd的镜像来作为我们的web服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。
 
NAME:镜像仓库源的名称
 
DESCRIPTION:镜像的描述
 
OFFICIAL:是否docker官方发布
 
19. 拖取镜像
我们决定使用上图中的httpd 官方版本的镜像,使用命令 docker pull 来下载镜像。
 
 
下载完成后,我们就可以使用这个镜像了。
 
docker run httpd
 
 
20. 创建镜像
当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。
 
1.从已经创建的容器中更新镜像,并且提交这个镜像
2.使用 Dockerfile 指令来创建一个新的镜像
 
在运行的容器内使用 mkdir create a dir
在完成操作之后,输入 exit命令来退出这个容器。
 
此时ID为e218edb10161的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit来提交容器副本。
 
 
docker commit -m="has update" -a="gaocng" cff94d57f05d gaocong/ubuntu:v1
 
 
21. 构建镜像
我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。
 
FROM    centos:6.7
MAINTAINER      Fisher "71849@qq.com"
 
RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D
 
 
 
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
 
第一条FROM,指定使用哪个镜像源
 
RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。
 
然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。
 
docker build -t runoob/centos:6.7 .
 
 
 
参数说明:
 
-t :指定要创建的目标镜像名
 
. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
 
使用docker images 查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec
 
 
 
后台运行自己构建的镜像
 
docker run -d -p 22:22  gaocong/centos:7
 
 
 
22 .容器命名
当我们创建一个容器的时候,docker 会自动对它进行命名。另外,我们也可以使用 --name 标识来命名容器,例如:
 
 
23. 容器IP的查方法
 
docker inspect 容器ID或容器名 |grep '"IPAddress"'
 
 
24. 使用docker exec进入Docker容器
 
docker exec -it 775c7c9ee1e1 /bin/bash
docker exec -it 4a59202ff53d /bin/sh

  

posted @   小小高  阅读(355)  评论(2编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2018-04-25 winform 应用log4net做日志记录到mysql
2018-04-25 c# 单实例运行
2018-04-25 Sql Server数据库监听 c#代码
2018-04-25 winform程序开机自动启动
2017-04-25 工厂方法模式
2017-04-25 简单工厂模式
2017-04-25 正则表达式练习2017年4月25日 11:41:23
点击右上角即可分享
微信分享提示