酷炫网站模板,163域名注册,长沙网站seo源头厂家,在线小游戏网页版目录
Docker基本操作
1、镜像操作
2、容器操作
3、数据卷#xff08;容器数据管理#xff09;
4、数据卷挂载
5、Dockerfile自定义镜像 Docker基本操作
1、镜像操作
镜像名称一般分两部分组成#xff1a;[repository]:[tag]。
在没有指定tag时#xff0c;默认是la…目录
Docker基本操作
1、镜像操作
2、容器操作
3、数据卷容器数据管理
4、数据卷挂载
5、Dockerfile自定义镜像 Docker基本操作
1、镜像操作
镜像名称一般分两部分组成[repository]:[tag]。
在没有指定tag时默认是latest代表最新版本的镜像 镜像命令 示例从DockerHub中拉取一个nginx镜像并查看
1、首先去镜像仓库搜索nginx镜像比如DockerHubDocker 2、进入官方镜像 查看docker命令
docker --help 复制命令运行拉取镜像
docker pull nginx 拉去完后查看镜像
docker images 示例利用docker save将nginx镜像导出磁盘然后再通过load加载回来
利用docker xx --help命令查看docker save和docker load的语法 保存镜像
docker save -o nginx.tar nginx:latest 删除镜像
docker rmi nginx:latest 加载镜像
docker load -i nginx.tar 示例去DockerHub搜索并拉取一个Redis镜像
1去DockerHub搜索Redis镜像 2查看Redis镜像的名称和版本 3利用docker pell命令拉取镜像
docker pull redis 4利用docker save命令将redis:latest打包为一个redis.tar包
docker save -o redis.tar redis:latest 5利用docker rmi删除本地的redis:latest
docker rmi redis:latest 6.利用docker load重新加载redis.tar文件
docker load -i redis.tar 2、容器操作 示例
Nginx容器运行命令 docker run --name mn -p 80:80 -d nginx
命令解读:
docker run 创建并运行一个容器
--name给容器起一个名字比如叫做mn
-p将宿主机端口与容器端口映射冒号左侧是宿主机端口右侧是容器端口
-d后台运行容器
nginx镜像名称例如nginx 查看创建的容器
docker ps 访问80端口 查看日志
docker logs mn #容器名称 持续跟踪日志
docker logs -f mn
进入容器
docker exec -it mn bash
命令解读:
docker exec 进入容器内部执行一个命令
-it给当前进入的容器创建一个标准输入、输出终端允许我们与容器交互
mn要进入的容器的名称
bash进入容器后执行的命令bash是一个linux终端交互命令
查看nginx的HTML目录
cd /usr/share/nginx/html
退出容器
exit 停止容器
docker stop mn 启动容器
docker start mn 删除容器运行中的容器不能删除
docker rm mn 强制删除容器
docker rm -f mn
总结
查看容器状态: docker ps
添加-a参数查看所有状态的容器删除容器docker rm
不能删除运行中的容器除非添加-f参数
进入容器命令是docker exec -it [容器名][要执行的命令]
exec命令可以进入容器修改文件但是在容器内修改文件是不推荐的
示例创建并运行一个redis容器并且支持数据持久化 3、数据卷容器数据管理
容器与数据耦合的问题
1、不便于修改当我们要修改Nginx的html内容时需要进入容器内部修改很不方便。
2、数据不可复用在容器内的修改对外是不可见的。所有修改对新创建的容器是不可复用的。
3、升级维护困难数据在容器内如果要升级容器必然删除旧容器所有数据都跟着删除了
数据卷(volume)是一个虚拟目录指向宿主机文件系统中的某个目录。 数据卷操作的基本语法如下
docker volume [COMMAND]
docker volume命令是数据卷操作根据命令后跟随的command来确定下一步的操作:
create创建一个volume
inspect显示一个或多个volume的信息
ls列出所有的volume
prune删除未使用的volume
rm删除一个或多个指定的volume
示例创建一个数据卷并查看数据卷在宿主机的目录位置
docker volume create html 查看创建的数据卷
docker volume ls 查看数据卷位置
docker volume inspect html 删除数据卷
docker volume rm html 4、数据卷挂载
我们在创建容器时可以通过-v参数来挂载一个数据卷到某个容器目录 示例
nginx的html目录所在位置/usr/share/nginx/html把这个目录挂载到html这个数据卷上
方便操作其中的内容。
创建容器并挂载数据卷到容器内的HTML目录
docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx 查看挂载位置 数据卷挂载方式:
-v volumeName: /targetContainerPath
如果容器运行时volume不存在会自动被创建出来
总结
1. docker run的命令中通过-v参数挂载文件或目录到
容器中: -v volume名称容器内目录 -v宿主机文件容器内文件 -v宿主机目录容器内目录
2.数据卷挂载与目录直接挂载的 数据卷挂载耦合度低由docker来管理目录但是目录较深不好找 目录挂载耦合度高需要我们自己管理目录不过目录容易寻找查看
5、Dockerfile自定义镜像
镜像结构 总结
镜像是分层结构每一层称为一个Layer
Baselmage层包含基本的系统函数库、环境变量、文件系统
Entrypoint入口是镜像中应用启动的命令
其它在Baselmage基础上添加依赖、安装程序、完成整个应用的安装和配置
Dockerfile语法
Dockerfile就是一个文本文件其中包含一个个的指令(Instruction)用指令来说明要执行什么操作
来构建镜像。每—个指令都会形成一层Layer。
指令说明示例 FROM指定基础镜像FROM centos:6ENV设置环境变量可在后面指令使用ENV key valueCOPY拷贝本地文件到镜像的指定目录COPY ./mysql-5.7.rpm /tmpRUN执行Linux的shell命令一般是安装过程的命令RUN yum install gccEXPOSE指定容器运行时监听的端口是给镜像使用者看的EXPOSE 8080ENTRYPOINT镜像中应用的启动命令容器运行时调用ENTRYPOINT java -jar xx.jar
更新详细语法说明请参考官网文档Dockerfile reference
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量JDK的安装目录
ENV JAVA_DIR/usr/local# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar# 安装JDK
RUN cd $JAVA_DIR \ tar -xf ./jdk8.tar.gz \ mv ./jdk1.8.0_144 ./java8# 配置环境变量
ENV JAVA_HOME$JAVA_DIR/java8
ENV PATH$PATH:$JAVA_HOME/bin# 暴露端口
EXPOSE 8090
# 入口java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar