docker基本命令
特别鸣谢:B站up主 狂神说java的视频,让我能短时间了解docker!
docker文件系统
docker镜像为分层设计,相比于全量的虚拟机镜像,少了引导程序bootfs,共用系统内核rootfs。
配置层(容器层)
commit镜像
docker commit -a="" -m="" docker_id image_name:tag
类似于给镜像打个快照。
容器数据卷
解决问题 ->数据持久化 本质是目录挂载
使用数据卷
方式一: 直接使用命令挂载 -v
docker run -it -v 主机目录:容器内目录 image_id /bin/bash
具名和匿名挂载
docker run -d -P --name nginx01 -v /etc/nginx(容器内路径) nginx
docker run -d -P --name nginx02 -v xff-nginx:/etx/nginx(容器内路径) nginx
root@hecs-39042:/var/lib/docker/volumes
4ad594eee4e6115b2852f5fa952176c799e99bf1d0cadaee9c581085b8e38b6e d309f4a3ce1aa585673548ed4fd43a3aa7a5ca4f86a5a52b236d02428b991379 xff-nginx
backingFsBlockDev metadata.db
root@hecs-39042:/var/lib/docker/volumes
DRIVER VOLUME NAME
local 4ad594eee4e6115b2852f5fa952176c799e99bf1d0cadaee9c581085b8e38b6e
local d309f4a3ce1aa585673548ed4fd43a3aa7a5ca4f86a5a52b236d02428b991379 --匿名挂载
local xff-nginx --具名挂载
root@hecs-39042:/var/lib/docker/volumes
# 如何确定是具名、匿名、指定路径挂载
-v xff-nginx(卷名):容器内路径
-v 容器内路径
-v /path(宿主机路径):/容器内路径
拓展:
-v :/容器内路径:ro or rw
# ro 只能通过宿主机操作, 容器内部是无法操作!
多个容器间数据共享
docker run -d -P -name nginx01 nginx
docker run -d -P -name nginx02 --volumes-form nginx01 nginx
docker run -d -P -name nginx03 --volumes-form nginx01 nginx
初识Dockerfile commit
Dockerfile 用来构建镜像,命令参数脚本。
构建步骤:
1.编写一个dockerfile
2.docker build 构建成为一个镜像
3.docker run 运行镜像
4.docker push 发布镜像
FROM ubuntu
VOLUME ["volume01","volume02"]
CMD echo "----build image succeed----"
CMD /bin/bash
Dockerfile 构建过程
1.每个关键字都必须是大写字母
2.执行顺序从上到下
3.# 表示注释
4.每一个指令都会创建提交一个新的镜像,并提交
FROM
MAINTAINER
RUN
ADD
WORKDIR
VOLUME
EXPOSE
CMD
ENTRPOINT
ONBUILD
COPY
ENV
创建一个ubuntu
CMD 和 ENTRYPOINT的区别
root@hecs-39042:/home/docker
docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-l": executable file not found in $PATH: unknown.
root@hecs-39042:/home/docker
root@hecs-39042:/home/docker
total 56
drwxr-xr-x 1 root root 4096 Mar 27 07:13 .
drwxr-xr-x 1 root root 4096 Mar 27 07:13 ..
-rwxr-xr-x 1 root root 0 Mar 27 07:13 .dockerenv
CMD外部传入的命令会覆盖掉dockerfile里面的
ENTRYPOINT可以通过外部命令追加参数
发布自己的镜像
docker login
docker网络
veth-pair
--link
自定义网络
docker run -d -P --name tomcat06 --net bridge tomcat
docker0特点:不能通过域名访问;--link可以打通
# 创建自定义网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
# 启动容器指定自定义网络
docker run -d -P --name tomcat-mynet-01 --net mynet tomcat
# 跨网络操作容器
docker network connect mynet contain
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)