一、什么是docker,项目中使用docker的目的是什么?
1.什么是docker?
(1)Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
2.使用docker目的是什么?
(1)解决依赖兼容问题:
实现:
Ⅰ、将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包
ps:Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。 镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器进程做隔离,对外不可见。并且一个镜像可以启动多次,形成多个容器进程。
Ⅱ、每个应用放到一个隔离容器去运行,避免互相干扰
(2)解决操作系统环境差异:
Ⅰ、Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包
Ⅱ、Docker运行到不同操作系统时,直接基于打包的函数库,借助于操作系统的Linux内核来运行
3.Docker有哪些优势?
(1)可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统
(2)运行时利用沙箱机制形成隔离容器,各个应用之间互不干扰
(3)仅通过一行命令课实现启动和移除,方便快捷
二、Docker命令使用
(1)docker build:构建镜像
(2)docker push:推送镜像到服务
(3)docker pull:从服务器拉取镜像
(4)docker save:保存为一个压缩包 | 格式 | docker save -o
(5)docker load:加载压缩包为镜像
(6)docker images:查看拉取到的镜像
(7)docker xx --help:查看命令语法,ps:docker pull --help
(8)docker save -o [保存的目标文件名称] [镜像名称]:导出镜像到磁盘 ,ps:docker save -o nginx.tar nginx:latest
(9)docker rmi [镜像名称]:删除镜像,ps:docker rmi nginx:latest
(10)docker load -i [保存的目标文件名称]:加载本地文件,ps:docker load -i nginx.tar
———————————————————————————————————————————
容器操作命令
(11)docker exrc:进入容器执行命令
(12)docker logs:查看容器运行日志
(13)docker ps:查看所有运行的容器及状态
(14)docker run:创建并运行一个容器,处于运行状态
(15)docker pause:让一个运行的容器暂停
(16)docker unpause:让一个容器从暂停状态恢复运行
(17)docker stop:停止一个运行的容器
(18)docker start:让一个停止的容器再次运行
(19)docker rm:删除一个容器
ps:运行:进程正常运行 | 暂停:进程暂停,CPU不再运行,并不释放内存 | 停止:进程终止,回收进程占用的内存、CPU等资源
(20)docker run --name CN -p 80:80 -d nginx:创建并运行nginx容器
ps:docker run :创建并运行一个容器 |--name : 给容器起一个名字,比如叫做CN | -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口 | -d:后台运行容器 | nginx:镜像名称
创建时报错:WARNING: IPv4 forwarding is disabled. Networking will not work
解决方法:1.在宿主机上执行echo "net.ipv4.ip_forward=1" >>/usr/lib/sysctl.d/00-system.conf
2.执行systemctl restart network && systemctl restart docker
(21)docker exec -it CN bash:进入容器CN
ps:docker exec :进入容器内部,执行一个命令 | -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互 | CN:要进入的容器名 | bash:进入容器后执行的命令,bash是一个linux终端交互命令
(22)doker ps | -p:查看容器状态 | 包括已经停止的
———————————————————————————————————————————
数据卷命令
(23)docker volume [COMMAND]:数据卷操作命令 | create 创建一个volume,宿主机会有一个目录与之对应,可以理解为映射关系 | inspect显示一个或多个volume信息,可以查到看创建数据卷在宿主机的哪个目录下和一些关于数据集的详细信息 | ls列出所有的volume | prune删除未使用的volume | rm删除一个或多个指定的volume
(24)使用(20)创建容器并运行时 附上: -v html:/root/html:
把html数据卷挂载到容器内的/root/html这个目录中
挂载(解决容器数据耦合度高的问题)
docker run的命令中通过 -v 参数挂载文件或目录到容器中:
Ⅰ、-v volume名称:容器内目录
Ⅱ、-v 宿主机文件:容器内文
Ⅲ、-v 宿主机目录:容器内目录
ps:目录挂载在时,如果宿主没有提配置目录,不会自动补充
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)