1515- 镜像:可以认为是类似 Windows 下的:XXXX.iso
1616- 容器:容器为镜像的实例,可以认为是 Virtualbox 运行 XXXX.iso 后的效果
1717- 官网的镜像仓库地址:< https://store.docker.com/ >
18+ - 对开发来讲总结一个最简单的说法:在 Maven 未产生的年代,jar 包要随着开发项目走到哪里跟到哪里。有了 Maven 写好 pom.xml 即可。此时的 Docker 就好比如 Maven,帮你省去了开发过程中的部署环境差异,你再也不能随便说:你的系统可以运行,我的系统就不行。现在别人连系统都帮你做好了。
19+ - 玩法理念:单进程,一个容器最好最专注去做一个事情。虽然它可以既装 MySQL,又装 Nginx 等等,但是让一个容器只做好一件事是最合适的。
1820- 其他通俗解释:
1921
2022> Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。
@@ -226,69 +228,80 @@ java -jar /root/spring-boot-my-demo.jar
226228- ` docker build` :使用 Dockerfile 创建镜像(推荐)
227229 - ` docker build --rm -t runoob/ubuntu:v1 .` ,参数 ` -t` ,表示:-tag,打标签
228230- ` docker history` :显示生成一个镜像的历史命令
229- - ` docker save` :将一个镜像保存为一个 tar 包,带 layers 和 tag 信息
230- - ` docker save 容器ID/容器名称 -o /opt/test.tar`
231- - ` docker load` :从一个 tar 包创建一个镜像
232- 加载一个tar包格式的镜像; -i, --input=" " 从tar存档文件读取
231+ - ` docker save` :将一个镜像保存为一个 tar 包,带 layers 和 tag 信息(导出一个镜像)
232+ - ` docker save 镜像ID -o /opt/test.tar`
233+ - ` docker load` :从一个 tar 包创建一个镜像(导入一个镜像)
233234 - ` docker load -i /opt/test.tar`
234235
235236
236- > 容器操作
237+ > 容器管理操作
237238
238239- ` docker ps` :列出当前所有 ** 正在运行** 的容器
240+ - ` docker ps -a` :列出所有的容器(包含历史,即运行过的容器)
239241 - ` docker ps -l` :列出最近一次启动的container
240- - ` docker ps -a` :列出所有的container(包含历史,即运行过的container)
241242 - ` docker ps -q` :列出最近一次运行的container ID
242243 - ` docker ps -n x` :显示最后 x 个容器,不管是正在运行或是已经停止的
243- - ` docker inspect 容器ID/容器名称` :查看容器的全面信息,用 JSON 格式输出
244- - ` docker top 容器ID/容器名称` :显示容器的进程信息
245- - ` docker attach 容器ID/容器名称` :连接到正在运行中的容器, 要attach上去的容器必须正在运行
244+ - ` docker inspect 容器ID` :查看容器的全面信息,用 JSON 格式输出
245+ - 获取容器中的 IP:` docker inspect -f ' {{.NetworkSettings.IPAddress}}' 容器ID`
246+ - 给容器重新设置 IP 和 子网掩码,需要在宿主上:` ifconfig 容器ID 192.168.200.1 netmask 255.255.255.0`
247+ - ` docker top 容器ID` :显示容器的进程信息
246248- ` docker events` :得到 docker 服务器的实时的事件
247- - ` docker logs -f 容器ID/容器名称 ` :查看容器日志
248- - ` docker logs 容器ID/容器名称 ` ,获取守护式容器的日志
249- - ` docker logs -f 容器ID/容器名称 ` ,不断监控容器日志,类似 tail -f
250- - ` docker logs -ft 容器ID/容器名称 ` ,在 -f 的基础上又增加 -t 表示为每条日志加上时间戳,方便调试
251- - ` docker logs --tail 10 容器ID/容器名称 ` ,获取日志最后 10 行
252- - ` docker logs --tail 0 -f 容器ID/容器名称 ` ,跟踪某个容器的最新日志而不必读取日志文件
249+ - ` docker logs -f 容器ID` :查看容器日志
250+ - ` docker logs 容器ID` ,获取守护式容器的日志
251+ - ` docker logs -f 容器ID` ,不断监控容器日志,类似 tail -f
252+ - ` docker logs -ft 容器ID` ,在 -f 的基础上又增加 -t 表示为每条日志加上时间戳,方便调试
253+ - ` docker logs --tail 10 容器ID` ,获取日志最后 10 行
254+ - ` docker logs --tail 0 -f 容器ID` ,跟踪某个容器的最新日志而不必读取日志文件
253255- ` docker wait` :阻塞到一个容器,直到容器停止运行
254256- ` docker export` :将容器整个文件系统导出为一个tar包,不带layers、tag等信息
255257- ` docker port` :显示容器的端口映射
256258
257259> 容器生命周期管理
258260
259261- ` docker run`
260- - ` docker run -i -t centos /bin/bash` ,在 centos 容器下运行 shell bash。其中参数:-i -t 表示保证容器中的 STDIN 开启,并分配一个伪 tty 终端进行交互。此外常用的参数还有:--name 是给容器起了一个名字;-d 容器运行在后台。-p 8080:80 表示端口映射,将宿主机的8080端口转发到容器内的80端口。容器的名称规则:大小写字母、数字、下划线、圆点、中横线,用正则表达式来表达就是:[a-zA-Z0-9_* -]
262+ - ` docker run --name myDockerNameIsGitNavi -i -t centos /bin/bash` ,在 centos 容器下运行 shell bash。
263+ - ` -i -t` 分别表示保证容器中的 STDIN 开启,并分配一个伪 tty 终端进行交互,这两个是合着用。
264+ - ` --name` 是给容器起了一个名字(如果没有主动给名字,docker 会自动给你生成一个)容器的名称规则:大小写字母、数字、下划线、圆点、中横线,用正则表达式来表达就是:[a-zA-Z0-9_* -]
265+ - ` -d` 容器运行在后台。
266+ - ` -p 8080:80` 表示端口映射,将宿主机的8080端口转发到容器内的80端口。
267+ - ` docker run --rm --name myDockerNameIsGitNavi -i -t centos /bin/bash` ,在 centos 容器下运行 shell bash。
268+ - ` --rm` ,表示退出即删除容器,一般用在做实验测试的时候
261269 - ` docker run --restart=always -i -t centos /bin/bash` ,--restart=always 表示停止后会自动重启
262270 - ` docker run --restart=on-failure:5 -i -t centos /bin/bash` ,--restart=on-failure:5 表示停止后会自动重启,最多重启 5 次
263- - ` docker run -i -t -v /opt/setups/:/opt/software/ 容器ID /bin/bash` ,启动容器,并进入 shell,同时挂载宿主机和容器的目录
271+ - ` docker run -i -t -v /opt/setups/:/opt/software/ 镜像ID /bin/bash` ,启动容器,并进入 shell,同时挂载宿主机和容器的目录
264272 - ` -v:表示需要将本地哪个目录挂载到容器中,格式:-v < 宿主机目录> :< 容器目录> `
265- - ` docker run -d -p 58080:8080 --name javaweb lin_javaweb :0.1 /root/run.sh` ,运行容器中 Spring Boot 应用
273+ - ` docker run -v /java_logs/:/opt/ - d -p 58080:8080 --name myDockerNameIsGitNavi myCustomImageName :0.1 /root/run.sh` ,运行容器中 Spring Boot 应用
266274 - ` -d` :表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。
267275 - ` -p` :表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 58080 端口,这样就向外界暴露了 58080 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
268276 - ` --name` :表示容器名称,用一个有意义的名称命名即可
277+ - ` docker run -d -p 58080:8080 --name myDockerNameIsGitNavi myCustomImageName:0.1 /root/run.sh` ,运行容器中 Spring Boot 应用
269278- 进入容器后退出,输入:` exit` 回车
270-
271-
272-
273279- ` docker start` ,重新启动已经停止的容器
274- - ` docker start 容器ID/容器名称`
280+ - ` docker start 容器ID`
281+ - ` docker attach` :连接上正在运行中的容器, 被 attach 上去的容器必须正在运行的才可以
282+ - ` docker attach 容器ID` :重新进入容器终端中
275283- ` docker stop`
276284- ` docker restart`
277285- ` docker kill 容器ID/容器名称` ,
278286- ` docker rm` ,删除容器
287+ - ` docker rm 容器ID` ,删除指定容器(该容器必须是停止的)
288+ - ` docker rm -f 容器ID` ,删除指定容器(该容器可以是正在运行的)
279289 - ` docker rm $( docker ps -a -q) ` ,删除所有容器
280290- ` docker pause/unpause`
281291- ` docker create`
282292- ` docker exec` :对守护式的容器里面执行命令,方便对正在运行的容器进行维护、监控、管理
283293 - ` docker exec -i -t 容器ID/容器名称 /bin/bash` ,进入正在运行的 docker 容器,并启动终端交互
284294 - ` docker exec -d 容器ID/容器名称 touch /opt/test.txt` ,已守护式的方式进入 docker 容器,并创建一个文件
285295- ` docker stop 容器ID/容器名称` :停止容器
286-
287-
288-
289- 容器rootfs命令
290-
291296- ` docker commit`
297+ 把容器打成镜像sudo docker commit a6c28e3f1ec4 ryzebo/docker-nodejs-test:0.1
298+ a6c28e3f1ec4 是容器的id
299+ ryzebo 是你注册的https://store.docker.com/的名字,如果你没有的话,那需要先注册
300+ docker-nodejs-test 是你为该镜像起的名字
301+ :0.1 是镜像的版本号,默认是latest版本
302+
303+ 在提交镜像时指定更多的数据(包括标签)来详细描述所做的修改
304+ sudo docker commit -m=" A new custom image" --author=" James Turnbull" 4aab3ce3cb76 jamtur01/apache2:webserver
292305- ` docker cp` :从容器里向外拷贝文件或目录
293306 - ` docker cp Name:/container_path to_path`
294307 - ` docker cp ID:/container_path to_path`
@@ -337,11 +350,7 @@ docker run -i -t -p 3000:3000 ubuntu:16.04 /bin/bash
337350那就是把修改后的系统再打为iso就可以了。即,把容器再打为镜像即可。
338351退出容器
339352查看容器 docker ps -a
340- 把容器打成镜像sudo docker commit a6c28e3f1ec4 ryzebo/docker-nodejs-test:0.1
341- a6c28e3f1ec4 是容器的id
342- ryzebo 是你注册的https://store.docker.com/的名字,如果你没有的话,那需要先注册
343- docker-nodejs-test 是你为该镜像起的名字
344- :0.1 是镜像的版本号,默认是latest版本
353+
345354
346355查看镜像:docker images
347356
@@ -367,12 +376,9 @@ sudo docker run -i -t ubuntu /bin/bash
367376apt-get -yqq update
368377apt-get -y install apache2
369378退出当前容器
370- 提交定制容器
371- sudo docker commit 4aab3ce3cb86 jamtur01/appache2
372379检查新创建的镜像
373380sudo docker images jamtur01/apache2
374- 在提交镜像时指定更多的数据(包括标签)来详细描述所做的修改
375- sudo docker commit -m=" A new custom image" --author=" James Turnbull" 4aab3ce3cb76 jamtur01/apache2:webserver
381+
376382使用docker inspect查看新创建的镜像详细信息
377383sudo docker inspect jamtur01/apache2:webserver
378384从提交的镜像运行一个新容器
@@ -392,6 +398,49 @@ docker run -d -p 58080:8080 --name javaweb huangyong/javaweb:0.1 /root/run.sh
392398http://192.168.65.132:58080/
393399
394400# # Dockerfile 解释
401+
402+
403+
404+
405+
406+ # # Dockerfile 部署
407+
408+ - 目标:Spring Boot 应用
409+ - CentOS 7.3
410+ - jar 名称:skb-user-0.0.1-SNAPSHOT.jar
411+ - 打算用的宿主机端口:9096
412+ - Dockerfile 文件和 jar 文件存放在宿主机目录:/opt/zch
413+ - Dockerfile 内容如下:
414+
415+ ` ` ` bash
416+ FROM java:8-jre
417+ MAINTAINER skb-user zch < gitnavi@qq.com>
418+
419+ ADD skb-user-0.0.1-SNAPSHOT.jar /usr/local/skb/user/
420+
421+ CMD [" java" , " -Xmx500m" , " -jar" , " /usr/local/skb/user/skb-user-0.0.1-SNAPSHOT.jar" , " --spring.profiles.active=test" ]
422+
423+ EXPOSE 9096
424+ ` ` `
425+
426+ - 开始构建:
427+ - ` cd /opt/zch`
428+ - ` docker build . --tag=" skb/user:v1.0.1" `
429+ - ` docker run -d -p 9096:9096 -v /usr/local/logs/:/opt/ --name=" skbUser1.0.0" --net=host skb/user:v1.0.1`
430+ - 查看启动后容器列表:` docker ps`
431+ - jar 应用的日志是输出在容器的 /opt 目录下,因为我们上面用了挂载,所在在我们宿主机的 /usr/local/logs 目录下可以看到输出的日志
432+ - 防火墙开放端口:
433+ - ` firewall-cmd --zone=public --add-port=9096/tcp --permanent`
434+ - ` firewall-cmd --reload`
435+
436+
437+
438+
439+
440+
441+
442+
443+
395444
396445该文件名就叫Dockerfile,注意大小写,没有后缀,否则会报错。
397446
@@ -651,12 +700,10 @@ Marathon
651700 - 守护式容器:sudo docker run -d 镜像名
652701
653702sudo docker ps 查看已经运行过容器的基本信息
654- sudo docker inspect 容器ID:查看容器的详细信息
655703sudo docker stop 容器ID,停止守护式容器
656704sudo service docker restart,重启 docker 服务,当修改了 docker 相关的一些配置
657705sudo docker rm 容器ID,删除容器
658- 获取容器中的 IP:sudo docker inspect -f '{{.NetworkSettings.IPAddress}}' 容器ID
659- 修改 docker0 这个虚拟网桥,也就是 docker 的网络服务相关信息,比如给它重新设置 IP 和 子网掩码,在宿主上:sudo ifconfig docker0 192.168.200.1 netmask 255.255.255.0
706+
660707
661708
662709创建镜像:创建dockerfile,然后进行 build,
0 commit comments