docker 快速入门 实例 无废话(一)

docker 命令 快速入门 实例 无废话(一)

镜像(Image)

docker镜像就好比一个模板,我们可以通过这个模板来创建容器服务,tomcat镜像===>run==>tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。
版本 docker -ce 社区版 -ee 企业版

镜像类型

基础镜像
centos ubuntu alpine
中间件
mysql
编译环境
java
业务镜像 springboot

容器(container)

docker利用容器技术,独立运行一个或者一组应用 通过镜像来创建
启动,停止,删除,基本命令!
目前就可以把这个容器理解为就是一个简易的linux系统

仓库(repository)

仓库就是存放 镜像(image)的地方!
仓库又可以分为 公有仓库和私有仓库

标签 tag

标识定位镜像
docekr Daemon docker 引擎 简称 dockerd 镜像构建
Runc : run container 创建容器运行的cli 工具 容器启动后会退出
shim 进程 父进程 保护 输入输出流 进程

查看镜像列表
docker images

唯一确定镜像  镜像id  仓库:tag
获取镜像
  从仓库拉取 
  docker pull **(docker.io/library/)nginx(仓库)**:alpine               
  docker images
  本地构建
  docker build . -t my-nginx:ubuntu -f Dockerfile
通过镜像启动容器
 docker run --name my-nginx-alpine(容器)  -d  **nginx:alpine** (镜像)        -d后台运行
 镜像有id  容器也有id 容器id 很长  镜像id  很短
 docker ps 查看容器
 
进入容器执行命令
 docker  exec  容器名称  容器里面要执行的命令
例子:docker  exec  my-nginx-alpine  ls

docker exec  -it 容器名称  进入容器里面
例子:docker exec  -it my-nginx-alpine  /bin/bash

查看进程  ps aux

docker怎么知道容器启动后该执行什么命令?
创建Dockerfile
FROM   (docker.io/library/)ubuntu      容器的基础镜像模板来源
RUN  apt-get update && apr install -y  nginx     镜像里面要执行什么命令
CMD ["/usr/bin/nginx","-g","daemon off;"]    启动容器时执行该命令

CMD 的内容就是  docker ps  中  COMMAND  的内容 代表怎么启动这个nginx  的命令

构建本地镜像 
docker build . -t my-nginx:ubuntu -f Dockerfile  -t指定镜像的tag  .就是 ./ Dockerfile的路径

使用新镜像启动容器
docker run --name my-nginx-ubuntu(容器) -d **my-nginx:ubuntu(镜像)**
docker exec  -it my-nginx-ubuntu  /bin/bash
ps aux

如何访问容器内部服务
docker exec  -it my-nginx-ubuntu  /bin/bash
ps aux|grep nginx
curl localhost:80               curl命令是一个利用URL规则在命令行下工作的文件传输工具   
curl命令是一个网络工具,其主要作用是通过http、ftp等方式下载文件,也能够上传文件

但是这个服务只有在容器内部访问因为容器没有ip,所以要在外部也能访问
docker rm -f my-nginx-alpine       删掉旧服务重新启动
docker run --name my-nginx-ubuntu -d -p 8080:80  nginx:ubuntu     
-p 就是端口映射 8080是外部端口
curl 192.168.0.1:8080

导出镜像到文件中
docker save -o nginx-alpine.tar  nginx:alpine
从文件中加载镜像  
docker load -i nginx-alpine.tar

docker info 查看仓库地址

仓库服务
官方提供了一个镜像 用那个镜像启动容器 可以提供仓库服务,进行拉取 和 推送镜像
docker run -d -p 5000:5000   --restart always    --name registry(容器) registry:2(镜像)  
如果本地没有这个镜像会自动去拉取
--restart always(重启后自动启动,别的镜像在docker重启后会退出)

上传本地镜像到本地仓库   然后通过本地仓库推送到远程仓库
先打标签
docker tag **nginx:alpine**  localhost:5000/**nginx:alpine**(镜像名字)  localhost:5000就是本地仓库
docker  push localhost:5000/nginx:alpine(本地仓库中的镜像的地址)
因为镜像地址就是  仓库/xxx/ xxx:latest

查看本地仓库里面的元数据 
curl  -X GET http://192.168.0.1:5000/v2/_catalog     查看镜像
["nginx"]
curl  -X GET http://192.168.0.1:5000/v2/nginx/tags/list     查看标签

删除镜像rmi
docker rmi  nginx:alpine(或者id 是删元数据如果有多个的话)

查看容器运行状态
docker ps
查看全部状态容器列表 
docker ps -a
容器内存资源限制
docker run --memory=500m nginx:alpine
有状态无状态
mysql  数据是和进程绑定的 所以是有状态的 
nginx 无状态
容器数据持久化
挂载目录
docker run --name nginx -d -v /opt:/opt nginx:alpine  
-v (volume 数据卷)   宿主机数据卷:容器内部数据卷

docker run --name mysql -d  -v /opt/mysql/:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=12345
mysql:5.7

主机和容器之间传输数据
docker cp /temp/test.txt  nginx:/temp
docker exec -it nginx cat /temp/test.txt

容器拷贝到主机
docker cp nginx:/temp/test.txt ./

挂载已有数据,重新创建镜像仓库容器
tar zxf registry.tar.gz -C /opt
docker rm -f registry 删除仓库容器
docker run -d -p 5000:5000 --restart always -v /opt/registry:/var/lib/registry  
--name registry registry:2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值