网站 蓝色,广告策划案优秀案例,建网站 开发app,办公楼网络组建方案设计docker的原理请参考博文《Docker与Kubernetes》。
一、安装docker的指令
1.1 安装yum工具
yum install -y yum-utils \device-mapper-persistent-data \lvm2 --skip-broken补充#xff1a;配置镜像源
注意#xff1a; yum安装是在线联网下载安装#xff0c;而很多的资源…docker的原理请参考博文《Docker与Kubernetes》。
一、安装docker的指令
1.1 安装yum工具
yum install -y yum-utils \device-mapper-persistent-data \lvm2 --skip-broken补充配置镜像源
注意 yum安装是在线联网下载安装而很多的资源在国外会去国外的网站安装速度会很慢此时需要配置镜像源。 命令如下
yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed -i s/download.docker.com/mirrors.aliyun\/docker-ce/gyum makecache fast1.2 安装docker
yum install -y docker-ce说明 -y 表示“遇到问题都选y”
1.3 启动docker
注意 启动docker前一定要关闭防火墙。
# 关闭防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld启动docker服务
# 启动docker服务
systemctl start docker
# 查看状态
systemctl status docker关于docker的一些其他指令
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
docker -v #查看docker版本1.4 配置docker镜像
以使用华为云的docker镜像加速器为例。 登录华为云账号公司买的IAM用户使用的是公司购买的华为云服务器找到docker镜像服务。 先创建一个镜像配置文件
# 使docker重新读取镜像库配置文件systemctl daemon-reload
# 重启docker服务
systemctl restart docker说明 每次修改daemon.json文件都要执行上面两个命令。
二、docker的基本操作
2.1 镜像的命令规范
镜像名称一般分为两部分[repository]:[tag] tag指镜像版本若是没有该项则默认为最新版本的(lastest)。
2.2 docker的镜像操作 docker build构建镜像 docker pull 从镜像服务器拉取镜像 docker push 推送镜像到镜像服务器 docker img 查看镜像 docker rmi 删除镜像 docker save 保存镜像为一个压缩包 docker load 加载压缩包为镜像 例如
三、容器相关命令
**docker run 创建容器运行状态 docker rm 删除容器删除容器及硬盘上的文件 docker pause 暂停容器保留容器的内存及硬盘上的文件 docker unpause 唤醒容器 docker stop 停止容器删除容器的内存保留硬盘上的文件 docker start 启动容器 docker exec 进入容器执行命令 docker ps 查看所有运行的容器及状态 docker logs 查看容器运行日志 **
3.1 容器基本命令创建、删除 说明 容器是与外界隔离的任何人都无法访问。为了能使外部请求能够访问到容器 需要暴露容器的端口与宿主机端口关联。 例如上图nginx容器的端口为80把容器端口与宿主机端口关联。当访问http://宿主机ip:80时会把请求转发到nginx容器。 例如 访问容器 跟踪日志输出
3.2 进入容器执行命令 创建一个容器后进行容器控制台
3.2.1 案例1-修改nginx容器首页内容
从上图中可以看出容器有自己的文件系统。 下面进行一个小案例来体验一下修改nginx欢迎页内容 找到index.html文件 修改文件
sed -i s#Welcome to nginx#hello docker#g index.html
sed -i s#head#headmeta charsetutf-8#g index.html注意都不要重启docker服务。 查看效果
3.2.2 案例2-使用redis容器
docker run --name redis-docker -p 6379:6379 -d redis redis-server --appendonly yes说明 “–appendonly yes”执行可持支aof持久化。 创建docker后可以用redis desktop Mamager连接 进入容器的控制台进行操作 也可以直接进入redis的客户端 查看效果
四、数据卷命令
数据卷(volume)是一个虚拟目录指向宿主机文件系统中的某个目录。且不同的容器可以共享同一个数据卷适用于集群。 实例-创建一个数据卷并查看它在宿主机上的位置
4.1 案例1-使用数据卷修改nginx首页内容
docker run --name nm -p 80:80 -v html:/usr/share/nginx//html -d nginx说明 -v 是使用数据卷注意如果-v 指定的数据卷html不存在会自动新建 编辑index.html文件 效果
4.2 案例2-创建一个MySQL容器将宿主机目录直接挂载到容器 五、Dockerfile自定义镜像
5.1 镜像结构
以MySQL镜像为例。 5.2 Dockerfile
Dockerfile是一个文件其中包含一个个的指令,用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。 第一行必须是FROM从一个基础镜像来构建。 说明 1EXPOSE指令后的端口后用于docker run的-p参数后的端口值。
5.3 案例-基于Ubuntu构建一个运行java项目的新镜像
创建前的资源如下 Dockerfile的内容如下
# 指定基础镜像
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执行创建镜像指令
docker build -t javaweb:1.0 .说明 上述指令最后的.表示Dockerfile所在目录。 效果如下
补充简化Dockerfile
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量JDK的安装目录
ENV JAVA_DIR/usr/local# 拷到jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/# 安装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
# 前面的命令在安装基础镜像和JDK每次都写很重复COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口java项目的启动命令
ENTRYPOINT java -jar /tmp/app/jar如上安装前几层基础镜像和jdk的步骤可以单独打包。 事实上有一个名为java:8-alpine的镜像基于它可以将一个Java项目构建为镜像。 Dockerfile简化如下
# 指定基础镜像
FROM java:8-alpineCOPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口java项目的启动命令
ENTRYPOINT java -jar /tmp/app/jar六、DockerCompose
Docker Compose可以基于Compose文件帮我们快速地部署分布式应用而无需手动一个个创建和运行容器。 Compose文件是个文本文件通过指令其实是把docker run和docker-build指令转换了一下定义集群中的每个容器如何运行。 Compose文件示例如下
6.1 DockerCompose安装
后续补充
6.2 部署微服务集群
后续补充
七、Docker镜像仓库搭建企业私有镜像
后续补充