docker基础
查看centos版本
[root@VM-8-4-centos ~]# uname -r
3.10.0-1127.19.1.el7.x86_64
[root@VM-8-4-centos ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@VM-8-4-centos ~]#
docker info --查看自己的云加速地址
镜像与容器的关系
Docker
面向对象
容器
对象
镜像
类
Person p = new Person();
docker镜像实际就是由一层一层的文件系统组成,这种层级的文件系统UnionFS
Docker利用容器(Container)独立运行的一个或一组应用
容器是用镜像创建的运行示例, 简易版的Linux的环境
bootfs
bootfs(boot file system)主要包含bootloader和kernel(Linux内核)
bootloader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统,
在docker镜像的最底层是bootfs
这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核
当boot加载完之后整个内核就都在内存中了,此时内存的使用权已经由bootfs转交给内核,此时系统也会卸载掉bootfs
rootfs
rootfs(root file system)在bootfs之上,包含的就是典型的Linux系统中的/dev,/proc,/bin,/etc等标准目录和文件,
ootfs就是各种不同的操作系统发行版, 比如Centos Ubuntu等等
仓库(Respository)
是集中存放镜像的场所
** 仓库和仓库注册服务器(Registry)是有区别的,仓库注册服务器上往往存放着多个仓库,每个仓库又包含了多个镜像**
** 每个镜像都有不同的标签(tag)**
仓库分为公开仓库库和私有仓库两种形式
** 最大的公开仓库是Docker Hub**
** 存放了数量庞大的镜像提供用户下载,国内的公开仓库包含阿里云,网易云等**
容器数据卷
实现容器间传递共享(--volumes-from)
主机到容器,容器到主机
鲸鱼背上有集装箱(文字)
docker --鲸鱼
集装箱 --容器实例
蓝色的大海 --Windows10
集装箱图示(鲸鱼背上的集装箱图示)
为什么要分层--->共享资源
查看当前所有镜像id
docker images -q
docker images -qa
显示摘要信息
docker images --digests
运行时如果本地没有就会去远端仓库去拉,本地有就用本地的
--name="容器新名字":为容器指定一个新名称
-d:后台运行容器,并且返回容器id,也就是启动守护式容器
-i:以交互式模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与-i同时使用
-P:随机端口映射
-p:指定端口映射,有以下四种形式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
cintainerPort
运行容器实例
docker run -it --name mycentos001 centos[版本]
创建并运行容器,暴露端口
p:指定端口
P:随机分配
docker run -it -p 9090:8080 tomcat
停用全部运行中的容器:
docker stop $(docker ps -q)
删除全部容器:
docker rm $(docker ps -aq) admin gateway user customer
一条命令实现停用并删除容器:
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
回到宿主机但不退出容器
ctrl+p+q
显示当前正在运行的容器
docker ps
显示所有正在运行和历史运行过的容器
docker ps -a
显示前N次运行的容器
docker ps -n 3
显示上一次运行的容器
dokcer pa -l
启动容器(必须创建容器才能启动)
docker start [ID]或者[名字]
重新启动容器
docker restart [ID]或者[名字]
强制停止(直接拔插头)
docker kill [ID]
温柔停止(点击关机)
docker stop [ID]或者[名字]
删除容器
docker rm [ID]
删除镜像
docker rmi [ID]
删除正在运行的容器
dokcer rm -f [ID]
启动守护式容器就是后台运行, 后台运行容器必须要有一个前台进程,不然就会自动退出
docker run -d
每个两秒钟打印hello abaaba
docker run -d centos /bin/bash -c "while true;do echo hello abaaba;sleep 2;done"
查看某一个具体容器的日志,追加到后面
docker logs -t -f --tail [ID]
查看当前容器正在运行的进程
doker top [ID]
查看整个容器的细节
docker inspect [ID]
重新进入没有退出的容器
docker attach [ID]
进入容器(还没进入容器,直接操作命令可以得到结果[/bin/bash])
docker exec -t [ID] /bin/bash [ls -l /temp]
查看容器详细信息
doker inspect [容器ID]
如果不能执行 ls ll这种命令就
/bin/bash
删除正在运行的所有容器
docker rm -f $(docker ps -q)
创建文件
touch 【文件名】
从容器拷贝文件到Linux
docker cp [ID]:/路径/文件 /root
例如:docker cp 10h23bb388:/temp/yum.log /root
从10h23bb388容器下的temp下的yum.log文件拷贝到Linux下面的/root目录下
dockerfile文件编写
volume test
继承镜像
FROM centos
数据卷-实质是叠加新功能的地方
VOLUME ["/dataVolumeContainer1 --privileged=true","/dataVolumeContainer2","/data3","/data4"]
执行成功后打印输出
CMD echo "finished,-----------success1,成功创建镜像"
启动时创建命令
CMD /bin/bash
等价于:docker run -it -v /host1:/dataVolumeContainer1 -v /host2:/dataVolumeContainer2 centos /bin/bash
docker挂载主机目录Docker访问出现cannot open directory .:Permission denied
解决办法:在挂载目录后面多加一个 --privileged=true参数即可
追加共享,同步
可以得出结论:
容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止
如果最后一个容器也被 删掉了,那么数据卷里面的数据才会消失
继承(传递共享 ):
docker run -it --name centos2 --volumes-from centos1 lihonglin/centos
dockerfile添加
根目录下创建mydocker文件夹并进入
可以在DockerFile中使用VOLUME指令来给镜像添加一个或者多个数据卷
file构建
build后生成镜像
run容器
build创建
docker build -f /mydocker/mydockerfile -t lihonglin/centos .
返回HTML页面
dokcerfile常用命令
FROM:基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER:镜像作者和邮件地址
CMD:指定一个容器启动时要运行的命令,Dockerfile中可以有多个CMD指令,但是只有最后一个生效,CMD会被docker run 之后的参数替换
ENTRYPOINT:指定一个容器启动时要运行的命令,ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数
RUN:容器构建时需要运行的命令
EXPOSE:当前容器对外暴露的端口
WORKDIR:指定在创建容器后,终端默认登录进来的工作目录,落脚点
ENV:用来在构建镜像过程中设置环境变量
ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY:类似ADD,拷贝文件和目录到镜像中,将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像中的<目标路径>位置
VOLUME:容器数据卷,用于数据保存和持久化工作
ONBUILD:当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承后 父镜像的onbuild被触发
此处转
docker全部命令
Commands:
attach Attach local standard input, output, and error streams to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
version Show the Docker version information
wait Block until one or more containers stop, then print their exit codes

浙公网安备 33010602011771号