Docker的基本使用及DockerFile的编写

更新日期: 2021-12-04阅读: 824标签: docker

前言:

最近在准备面试,在复习到Docker相关内容时,想写一些东西分享给大家然后加深一下自己的印象,有了这篇随笔。

Docker的简介:

docker从文件系统、网络互连到进程隔离等等,极大的简化了容器的创建和维护,使得Docker技术比虚拟机技术更为便捷、快捷。

Docker的基本命令:

#查看docker 本地镜像
docker images
# 镜像下载 下载redis最后一个版本镜像
docker pull redis
# 删除本地镜像
docker rmi redis
# 强制删除本地镜像
docker rmi -f redis
# 创建一个名称为myredis的容器 使用的是reids:latest版本镜像
docker run --name mycentos -d centos:latest
--name 命名
-p 80:80 将端口映射出来通过主机ipv4地址:80 可以访问到容器内部
-v /data:/data 将主机目录/data下的内容映射到容器中/data中
-i -t 交互式创建容器,容器创建成功后直接进入容器中,可以进入容器的命令行模式
如:docker -it centos /bin/bash
-d 后台启动容器,启动一个守护进程

#启动一个容器
docker start centos

#重启一个容器
docker restart centos

#停止一个容器
docker stop centos

#进入容器
docker exec -i -t centos /bin/bash

#退出容器 
exit

#查看正在运行的容器容器
docker ps
#查看所有创建了的容器
docker ps -a
#查看容器日志
docker logs redis
参数:
-f 跟踪日志输出
-t 显示时间戳
--tail 列出最新的xx条容器日志

#删除容器
docker rm centos
#强制删除容器
docker rm -f centos

DockerFile的编写:

在这里我用我以前写过的一个DockerFile文件来做解释。

下面是Jmeter-base

FROM openjdk:8-jre-slim
# 引入java环境
LABEL maintainer='1056285392@qq.com'
MAINTAINER baijiahei

ARG JMETER_VERSION=5.1.1
#定义一个变量 jmeter版本
RUN mkdir /jmeter
# run为执行命令 创建jmeter目录
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
# 同步本地时间到容器中
WORKDIR jmeter
# 设置工作目录
# 安装 JMeter
ADD   ./apache-jmeter-5.1.1.tgz ./
# 添加本地目录文件到镜像中并解压
RUN apt-get update && apt-get install -y wget && apt-get install -y vim \
    && wget -P /jmeter/apache-jmeter-$JMETER_VERSION/lib/ext https://repo.maven.apache.org/maven2/kg/apc/jmeter-plugins-extras-libs/1.4.0/jmeter-plugins-extras-libs-1.4.0.jar \
    && wget -P /jmeter/apache-jmeter-$JMETER_VERSION/lib/ext https://repo.maven.apache.org/maven2/kg/apc/jmeter-plugins-standard/1.4.0/jmeter-plugins-standard-1.4.0.jar
#安装一些插件

ENV JMETER_HOME /jmeter/apache-jmeter-$JMETER_VERSION/
ENV PATH $JMETER_HOME/bin:$PATH
#设置环境变量

下面是Jmeter-slave

FROM congyiwei/jmeterbase
LABEL maintainer='1056285392@qq.com'
MAINTAINER baijiahei

EXPOSE 1099 50000
# 声明暴露端口

ENV SSL_DISABLED true
# 配置环境变量 将ssl设置为true

WORKDIR $JMETER_HOME/bin/
ENTRYPOINT ./jmeter-server \
                        -Dserver.rmi.localport=50000 \
                        -Dserver_port=1099 \
                        -Jserver.rmi.ssl.disable=${SSL_DISABLED} \
                        -Djava.rmi.server.hostname=${HOST_IP}
# salve配置文件修改
CMD [ "./", "/jmeter/apache-jmeter-5.1.1/bin/jmeter-server.sh -Djava.rmi.server.hostname=${HOST_IP}"]
#容器启动后,启动server

master就不贴具体内容了,大概思路设置工作空间为jmeter目录,创建test_jmx、report、result等目录,在创建容器时挂在本地目录过去,并进入容器内,去手动指定执行的jmx文件、负载机地址等。

构建及上传:

首先我们准备好Dockerfile,进入dokcerfile所在目录中执行命令:

docker build -t jmeterbase:v1.0 .

代表使用当前目录下的Dockerfile文件构建一个名叫jmeterbase的镜像,版本号为v1.0, 最后面的 .

参数: -f 显示指定构建镜像的 Dockerfile 文件(Dockerfile 可不在当前路径下)

-t 指定镜像的名字

最后面的 .   上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。

在默认情况下,如果不额外指定 Dockerfile 的话,会将上下文目录(Context)下的名为Dockerfile 的文件作为 Dockerfile

上传:

1.注册docker hub账户

2.创建仓库

3.

docker login

输入账户密码,登录成功后截图:


# 将生成的镜像打上tag,须要在镜像名称加上Docker hub用户

docker tag jmeterbase congyiwei/jmeterbase
# 上传
docker push congyiwei/jmeterbase
# 拉取镜像
docker pull congyiwei/jmeterbase

上传成功后,可以在dockerhub中查看到:


下载后可以使用docker images查看:


原文 http://www.cnblogs.com/congyiwei/p/15642444.html


链接: https://www.fly63.com/article/detial/10916

npm私有仓库 配置verdaccio在docker环境

前端开发过程中,少不了自己封装一些通用的包,但又不想放在公共的平台,所以搭建一个npm私有的仓库是很有必要的。在这里简单介绍如何使用 verdoccio 在docker环境下的配置。verdoccio,轻量级私有npm代理注册表。

ASP.NET Core 如何在运行Docker容器时指定容器外部端口(docker compose)

所以我们可以通过修改docker compose的配置文件来完成我们的需求。熟悉Docker的都应该知道容器运行时其内部会有一个端口以映射到我们外部的端口,我们需要固定的就是这个外部端口。

DOCKER上运行DOTNET CORE

下载microsoft/dotnet镜像、创建.NET Core MVC项目、上面dotnet restore这一步可能会卡很久遇到超时的状况,因为Nuget在国外的原因,博客园有提供加速镜像,参照设定好之后,速度会快很多

Docker---大型项目容器化改造

虚拟化和容器化是项目云化不可避免的两个问题。虚拟化由于是纯平台操作,一个运行于linux操作系统的项目几乎不需要做任何改造就可以支持虚拟化。而项目如果要支持容器化则需要做许多细致的改造工作。

开发人员爱Docker的10个理由

Stack Overflow开发人员调查中,开发人员将Docker评为:最受欢迎的平台,最喜欢的平台,最常用的平台。来自世界各地的近90,000名开发人员对调查做出了回应。

Docker部署网站之后映射域名

Docker中部署tomcat相信大家也都知道,不知道的可以google 或者bing 一下。这里主要是为了记录在我们启动容器之后,tomcat需要直接定位到网站信息,而不是打开域名之后,还得加个blog后缀才能访问到我们的网站首页。

微服务架构之「 容器技术 」

现在一聊到容器技术,大家就默认是指 Docker 了。但事实上,在 Docker 出现之前,PaaS社区早就有容器技术了,以 Cloud Foundry、OpenShift 为代表的就是当时的主流。那为啥最终还是 Docker 火起来了呢?

Docker部署ngnix静态网站

首先获取ngnix镜像(默认的是最新版),先来编写一个最简单的Dockerfile,一个Dockerfile修改该Nginx镜像的首页.Dockerfile是一个文本文件,其中包含了若干条指令

如何从单独的容器调试运行中的Docker容器?

容器非常适合封装软件,但是有时一味地改造容器镜像以使其尽可能小时,您可能走得太远。我们需要在“简洁”的镜像和无法调试的镜像之间找到很好的平衡。看到人们调试正在运行的容器的正常方法

内部集群的 DNS server 搭建

当我们使用 traefik 反向代理和自动服务发现后,我们对集群内部的服务分为两类:公有服务。如我的博客,网站,以及为它们提供服务的 API。我们可以通过公有的域名去映射服务使得外网能够访问

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!