docker

本文详细介绍了Docker的基础概念,如容器隔离、Docker与虚拟机的区别,以及一步步的安装教程。涵盖了镜像操作(拉取、查看、删除、保存和加载)、容器命令(包括启动、停止、删除和挂载),并通过实例演示了自定义镜像的构建和数据卷的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1. 初始Docker

 1.1 什么是docker

注意:docker容器之间使用沙箱实现容器隔离
43  04:20-07:52  讲解架构分层 

 

  1.2   Docker和虚拟机的差别

  44

 1.3   Docker架构 

 注意:容器只能读取镜像中数据,不能向镜像中写入数据,只能通过拷贝一份然后修改备份数据

04:52 讲解docker架构

1.4  docker安装

 Mac 安装 docker_IMSince1999的博客-优快云博客_mac安装docker

2. 镜像命令

2.1  docker镜像命令

 1、拉取文件
    从本地拉取: docker  build 镜像
    从服务器获取镜像:docker pull 镜像
 2、查看镜像: docker images
 3、删除镜像: docker rmi  镜像
 4、保存镜像: docker save 镜像
 5、加载镜像: docker load 镜像
 6、推送镜像: docker push 镜像
查看docker所有命令:
docker  --help
docker images --help 

  操作*:

  http://hub.docker.com

如果从 docker.hub下载镜像(例如:nginx): 

 

步骤一:
    镜像打包到本地:
    docker save --help 
    docker save -o nginx.tar nginx:latest
步骤二:
    删除镜像:
    docker rmi nginx:latest
    查看镜像:
    docker images 
步骤三:
    加载镜像:
    docker load  --help
    docker load  -i nginx.tar 

  

   1、http://hub.docker.com
   2、docker pull redis
   3、docker images
   4、docker save -o  redis.tar  redis:latest
   5、docker rmi redis:latest
   6、docker load -i redis.tar
      docker images 

3.2 docker容器命令

注意:1、暂停和停止的区别
     2、删除镜像:docker rmi 镜像
        删除容器:docker rm 容器

端口映射:容器之间是相互隔离的,如果想要访问只能通过映射宿主机器端口,通过宿主机器去访问
原理:将完全隔离的容器通过映射的窗口,让外界机器可以访问
 
操作:*
docker run -name mn -p 80:80  -d nginx 
--? 容器一旦创建完成就会返回一个唯一的id
docker ps
访问: http://localhost:80
查看日志:
docker logs mn
查看持续日志:
docker logs -f mn

 

docker  exec -it  mn bash
##进入容器内部(docker容器有自己的Linux目录)
找到nginx的静态文件
cd /usr/share/nginx/html
替换文本
sed -i 's#Welcome to nginx#传智教育欢迎您#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html
停止容器:
docker stop  mn
查看所有容器(包含停止容器):
docker ps -a
启动容器:
docker start mn
删除容器:
docker stop mn
docker rm mn
强制删除容器:
docker rm -f mn
docker ps -a 

 

 操作:* 

  

 docker exec -it mr bash 
 redis-cil 
 快捷进入reids:
 docker exec -it mr  redis-cil

数据卷挂载案例1 

删除未使用的数据卷: 
docker volume  prune 
查看数据卷:
docker volume  ls 
创建数据卷:
docker volume create html
删除数据卷:
docker volume rm html 

 注意: 容器文件挂载到宿主机上,修改文件更加方便

修改数据卷中的内容: 

 

打开nginx容器,数据同步修改了: 

验证:

删除数据卷和容器 :

重新创建nginx(数据卷html不存在自动创建): 

 数据卷挂载案例2

1. 将mysql.tar文件上传到虚拟机,通过老大命令加载为镜像

 2.创建目录/tmp/mysql/data ,将课前资料的hmy.cnf文件上传到/tmp/mysql/conf

3.创建目录/tmp/mysql/conf  

4.创建并运行Mysql容器: 

数据卷挂载和容器直接挂载的区别:

      容器直接挂载需要自己手动创建目录 

      数据卷挂载自动创建目录

3.docker自定义镜像(重新理解 举一反三)

没有底层的函数库怎么能构建环境配置;没有环境配置环境,如果构建依赖的安装;
没有依赖的安装如何完成应用的安装;没有应用的安装如何做应用的配置;
课件docker不仅是将这些东西融合在一起,还得按照一定的顺序去分层构建;

为什么分层?
比如升级mysql,只需要修改一些层次就可以,提高复用性,节约时间;

1.创建一个空文件夹docker-demo

2.拷贝课前资料的docker-demo.jar、Dockerfile、jdk8.tar.gz文件到docker-demo这个目录  

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

 3.进入docker-demo 运行命令:(. 表示dockerFile在当前目录下)

逐步执行步骤: 

 镜像构建完成并运行容器:

DockerFile:

# 指定基础镜像
FROM java:8-alpine

COPY ./docker-demo.jar /tmp/app.jar

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

 

DockerCompose和run的语法对比:

注意:mysql在容器内部使用,所以不需要暴露接口 

 

  

  

 

 

修改服务名:

 

  

部署项目: 

 查看日志:

注意:生产环境中线部署nocas,再去部署微服务(避免nocas没有部署完成,微服务连接nocas报错的情况)

 重启服务:

 验证:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值