<>docker
核心概念:镜像(image) 容器(container) 仓库(Repository)
一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
<>Docker 镜像
## 镜像搜索 docker search NAME[:TAG] ##不指定标签(TAG),则会默认选择latest标签,即最新版的镜像。 ## 拉取镜像
docker pull NAME[:TAG] ## 上传镜像 docker push NAME[:TAG] ## 列出本地镜像 docker image ls
-a ## 删除本地镜像(镜像没有被容器使用) docker image rm [image_name] -f 强制删除 ## 导出镜像 docker
save -o file_name image_name ##保留完整记录 ## 导入镜像 docker load < file_name ## 创建镜像
1、根据已有容器创建 docker commit [container_name] [REPOSITORY:TAG] 2、从文件模板导入 docker
import - [image_name]:[TAG] 3、dockerfile创建 dockerfile 是一个文件 docker build
dockerfile
<>Docker Container
## 查看容器 docker ps -a ## 启动容器 docker run [option] image_name command ## 启动参数 -P
自动映射容器所有端口到本地随机端口 -p 端口映射(本地端口:容器端口) 多个-p映射多个端口 -d 启动后进入后台运行 -i 交换式操作 -t 终端
--privileged 赋予容器扩展权限 --name 自定义容器名 --rm 容器退出后立即删除 -b 挂载指定的网桥
--ip-forward=true/false 是否开启转发功能 --dns 指定DNS服务器 -h 配置容器主机名 -ip 指定容器ip
--net=bridge/host/none 配置容器的桥接模式 ### 挂载主机目录 -v 主机目录:docker挂载位置:权限
##必须设置docker挂载位置,不然数据无法显示 默认是读写权限(:rw),可设为(:ro)只读权限。 ## 启动容器 docker start
container_name ## 终止容器 docker stop container_name ## 查看容器日志 docker logs
container_name ## 查看容器所有信息 docker container inspect [container_name] ## 进入容器
docker exec [option] [container] [command] ## 删除容器 docker rm container_name ##
清理所有处于静止状态的容器 docker prune ## 导入导出容器(import export) ##保留容器当时的快照状态 docker export
container_name > file_name
<>dockerfile
# Docker 守护进程会一条一条的执行 Dockerfile 中的指令,而且会在每一步提交并生成一个新镜像,最后会输出最终镜像的ID。
每条指令会生成一个镜像缓存,如果 Docker 没有找到当前指令的缓存,则会构建一个新的镜像,并且之后的所有指令都不会再去寻找缓存。 # 指令 FROM ##
指定所创建镜像的基础镜像 RUN ## 运行指定命令 CMD ## 指定启动容器时默认执行的命令,如果指定了多条,只有最后一条会被执行。 ADD ##
添加内容到镜像 ADD <source> <dest> COPY ## 复制内容到镜像 COPY <source> <dest> WORKDIR ##
指定工作目录 ENV ## 指定环境变量 EXPOSE ## 声明镜像内服务监听的端口
<>docker 网桥
# 旧版docker网桥 ## 默认网桥 docker0 ## bridge-utils ## 查看网桥和端口连接信息 brctl show ##
创建一个网桥 brctl addbr [bridge_name] ip addr add subnet/mask dev [bridge_name] ip
link set dev [bridge_name] up ## docker服务器使用-b指定网桥 # 新版docker网桥 ## 创建网桥 docker
network create --subnet=192.168.1.0/24 my_network ## --subnet自定义网段 ## 容器启动时指定网桥
docker run -dit --net=my_network --ip=192.168.1.22 ... ##
只有用--subnet自定义的网桥,才能使用--ip自定义IP
<>报错提示:
## Failed to get D-Bus connection: Operation not permitted --privileged
/usr/sbin/init
<>注意:
1、docker是linux容器,不是虚拟机
资源隔离:Docker达不到虚拟机所能提供的资源隔离水平。虚拟机的资源是高度隔离的,而Docker从设计之初就需要共享一些资源。
开销:Docker容器依然需要注意IO开销的问题,只不过没有虚拟机严重而已。
内核使用:Docker容器和虚拟机在内核使用上完全不同。每个虚拟机使用一个内核。Docker容器则是在所有容器间共享内核。 2、docker是一次性的
容器的生命周期是短暂的不应该让一个容器成为一台7*24小时的虚拟机。 3、docker是不支持动态添加端口映射
因为我的容器是即用即创建,用完即销毁的,如果说你需要在一个运行的容器中添加新的端口映射,为啥不重建一个容器呢? 4、不要把本地运行的容器转成镜像。
不要用“docker
commit”命令来创建,因为这种办法是不能重复的。我们在建镜像的时候应该从Dockerfile创建,或者用其他S2I(从源文件构建镜像)的方式来创建,这样镜像才具有可再生性,而且如果我们把镜像存在git之类提供版本控制能的系统里的话,还可以对Dockerfile的改动进行跟踪。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信