认识Docker

什么是Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口

Docker解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术

Docker的三要素:镜像,容器,仓库。

  1. Docker镜像就是一个只读的模板,镜像可以用来创建Docker容器,一个镜像可以创建多个容器。
  2. 一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器
  3. Docker 仓库是用来包含镜像的位置,Docker提供一个注册服
    务器(Register)来保存多个仓库,每个仓库又可以包含多个
    具备不同tag的镜像。
    Docker运行中使用的默认仓库是 Docker Hub 公共仓库。

容器技术—— “一次打包、随处运行”使资源调度、微服务更容易,解决了应用发布过程中,最头疼的环境一
致性问题

Docker常用命令

启动docker systemctl start docker
重启docker服务 systemctl restart docker
关闭docker服务 systemctrl stop docker

镜像命令

  1. docker images 列出本机上的镜像
    REPOSITORY:表示镜像的仓库源,同一仓库源有不同的TAG,代表不同的版本。我们用REPOSITORY:TAG来表示不同的镜像。
    在这里插入图片描述
    docker images -a 列出所有镜像
    docker images -q 只显示镜像的ID

    docker images --digests 显示镜像的摘要信息
    docker images --no-trunc 显示完整的镜像信息
  2. docker search(某个镜像的名字)
    docker search tomcat 去docker官网上查tomcat镜像
  3. docker pull … 下载某个镜像 不加版本默认下载最新的latest版本
    docker pull tomcat
    在这里插入图片描述
  4. docker rmi 某个镜像的名字ID
    docker rmi -f 强制删除某个镜像
    docker rmi -f A B docker rmi -f hello-world nginx 删除多个镜像 中间用空格连接下个删除的镜像
    docker rmi -f$(docker images -qa) 删除全部的镜像

容器命令
有镜像才能创建容器

  1. docker run [options] image [COMMAND] [ARG…] 新建并启动容器
    常用启动 docker run -it 后面跟镜像ID,NAME
    docker attach 容器名 重新进入该容器

  2. docker ps 启动容器后,在Linux中使用命令,查看正在运行的容器

  3. exit 退出容器,ctrl+P+Q 容器不停止退出

  4. docker start +ID 启动容器

  5. docker restart +ID 重新启动容器

  6. docker stop +ID 停止容器

  7. docker kill +ID 强制停止

  8. docker rm +ID 删除容器

  9. docker rm $(docker ps -aq) 删除所有容器

  10. docker run -d 容器名 启动守护式容器 后台运行,
    docker ps 查不出来

  11. docker logs +ID ,docker logs -t -f --tail 3
    查看日志

  12. docker commit 提交容器副本生成一个新的镜像
    docker commit -m=“提交的描述信息” -a=“作者” 容器ID要创建的目标镜像名:[标签名]

运行tomcat
docker run -it -p 8080:8080 tomcat
docker run -it -P tomcat 随机分配端口

运行nginx
docker run -p 8080:80 -d nginx:1.17.8

运行mysql
docker run -p 3306:3306 --name mysql
-v /hxg/mysql/conf:/etc/mysql/conf.d
-v /hxg/mysql/logs:/logs
-v /hxg/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=20010320
-d mysql:5.7

docker ps 查出来容器的id
进入mysql容器 docker exec -it 802d56b930fc /bin/bash
mysql -uroot -p 输入mysql数据库密码

运行redis

安装完成后,我们可以使用以下命令来运行 redis 容器:
docker run -itd --name redis-test -p 6379:6379 redis:3.2
接着我们通过 redis-cli 连接测试使用 redis 服务
docker run -itd --name redis-test -p 6379:6379 redis

redis-cli

Docker容器数据卷

将运用于运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对数据的要求希望是持久化的,容器之间希望又可能共享数据。

Docker容器产生的数据,如果不通过docker commit 生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。

为了能保存数据在docker中我们使用数据卷。

docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名

docker run -it -v /myDataVolume:/dataVolumeContainer(:ro) centos
加上:ro,相当于加了权限,容器只能读文件,不能写。

容器和宿主机之间数据共享,在宿主机myDataVolume目录下创建文件,在容器的dataVolumeContainer目录下也又该文件,并数据共享,可以操作数据。

容器停止退出后,主机修改后数据同步。

用dockerfile文件创建数据卷
在这里插入图片描述

DockerFile

DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。

Dockerfile,需要定义一个Dockerfile,Dockerfile定义了进程需要的一切东西。Dockerfile涉及的内容包括执行代码或者是文件、环境变量、依赖包、运行时环境、动态链接库、操作系统的发行版、服务进程和内核进程等

Docker镜像,在用Dockerfile定义一个文件之后,docker build时会产生一个Docker镜像,当运行Docker镜像时,会真正开始提供服务。

Docker容器,容器是直接提供服务的。

DockerFile体系结构(保留字指令)

  1. FROM 基础镜像,当前新镜像是基于哪个镜像的
  2. MAINTAINER 镜像维护者的姓名和邮箱地址
  3. RUN 容器构建时需要运行的命令
  4. EXPOSE 当前容器对外暴露出的端口
  5. WORKDIR 指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
  6. ENV 用来在构建镜像过程中设置环境变量
  7. ADD 将宿主机目录下的文件拷贝镜像且ADD命令会自动处理URL和解压tar压缩包
  8. COPY 类似ADD,拷贝文件和目录到镜像中。
    将从构建上下文目录中<源路径>的文件/目录复制到新的一层镜像内的<目标路径>位置
  9. VOLUME 容器数据卷,用于数据保存和持久化工作
    10.CMD 指定一个容器启动时要运行的命令
    Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后的参数替换
  10. ENTRYPOINT 指定一个容器启动时要运行的命令
    ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数
  11. ONBUILD 当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发

上传镜像到阿里云

$ docker login --username=houx****ng666 registry.cn-shanghai.aliyuncs.com

$ docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/houxugang/mydocker:[镜像版本号]

$ docker push registry.cn-shanghai.aliyuncs.com/houxugang/mydocker:[镜像版本号]

上传详情请查看阿里云镜像容器服务官方文档

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

越来越棒的hxg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值