type
status
date
slug
summary
tags
category
icon
password
Docker
Docker架构
我们要使用Docker来操作镜像、容器,就必须要安装Docker。
Docker是一个CS架构的程序,由两部分组成:
服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等
客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令。
DockerHub:
一个镜像托管的服务器,类似的还有阿里云镜像服务,统称为DockerRegistry
利用docker xx --help命令查看语法
镜像命令
保存、导入镜像
docker save -o [保存的目标文件名称] [镜像名称]
使用docker save导出镜像到磁盘
docker save -o nginx.tar nginx:latest
使用docker load加载镜像
docker load -i nginx.tar
容器操作
容器的三个状态:
运行:进程正常运行
暂停:进程暂停,CPU不再运行,并不释放内存
停止:进程终止,回收进程占用的内存、CPU等资源
容器命令
创建并运行一个容器
创建并运行nginx容器的命令:
命令解读:
docker run :创建并运行一个容器
--name : 给容器起一个名字,比如叫做mn
-p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口,一个容器可以创建多个端口映射,写多个-p即可.
-d:后台运行容器
进入容器操作
进入容器。进入nginx容器的命令为例:
docker exec -it mn bash
命令解读:
docker exec :进入容器内部,执行一个命令
-it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
mn :要进入的容器的名称
bash:进入容器后执行的命令,bash是一个linux终端交互命令
进入nginx的HTML所在目录 /usr/share/nginx/html
容器内部会模拟一个独立的Linux文件系统,看起来如同一个linux服务器一样
cd /usr/share/nginx/html/
数据卷(数据管理)
数据卷(volume)是一个虚拟目录,指向一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。
这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了
宿主机文件系统中的某个目录。
注:如果误删docker容器,但是并未对其指定挂在数据卷,数据可能会在volume中找到.
创建和查看数据卷
需求:创建一个数据卷,并查看数据卷在宿主机的目录位置
① 创建数据卷
docker volume create html
② 查看所有数据
docker volume ls
结果:

③ 查看数据卷详细信息卷
docker volume inspect html
结果:

可以看到,我们创建的html这个数据卷关联的宿主机目录为/var/lib/docker/volumes/html/_data目录。
数据卷操作
docker volume create:创建数据卷
docker volume ls:查看所有数据卷
docker volume inspect:查看数据卷详细信息,包括关联的宿主机目录位置
docker volume rm:删除指定数据卷
docker volume prune:删除所有未使用的数据卷
挂载数据卷
我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器内目录,命令格式如下:
docker run \
--name mn \
-v html:/root/html \
-p 8080:80
nginx \
这里的-v就是挂载数据卷的命令:
-v html:/root/htm :把html数据卷挂载到容器内的/root/html这个目录中
挂载本地目录
容器不仅仅可以挂载数据卷,也可以直接挂载到宿主机目录上。关联关系如下:
带数据卷模式:宿主机目录 --> 数据卷 ---> 容器内目录
直接挂载模式:宿主机目录 ---> 容器内目录
语法:
目录挂载与数据卷挂载的语法是类似的:
-v [宿主机目录]:[容器内目录]
-v [宿主机文件]:[容器内文件]
dockerfile详解
dockerfile是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本,它对镜像进行了分层处理,每层有对应的命令
流程
- 编写dockerfile文件-- vim Dockerfile
- docker build
- docker run
dockerfile结构(四部分)
基础镜像信息(Linux发行版:centos ubantu suse debian alpine redhat)
维护者信息(docker search可查看)
镜像操作指令(tar yum make)
容器启动时执行指令(cmd[“/root/run.sh”] 、entrypoint都是系统启动时,第一个加载的程序/脚本/命令)
编写规则:
第一行必须使用FROM指令指明所基于的镜像名称;
之后使用MAINTAINER指令说明维护该镜像的用户信息;
然后是镜像操作相关指令,如RUN指令。每运行一条指令,都会给基础镜像添加新的一 层。
最后使用CMD指令指定启动容器时要运行的命令操作。
文件操作
查看docker容器内的文件
docker exec 8e09942ea2d0(端口号) ls -a /
拷贝容器文件到本地
docker cp 容器id:/要拷贝的文件目录 /目的地
拷贝本地文件到容器
docker cp /本地路径 容器id:/容器的文件目录