docker学习之路

----------------------------------------------------------

https://docs.docker.com/engine/referende/commandline/docker

docker                  面向对象
镜像(Image)             类
容器(Container)         对象
----------------------------------------------------------
根据正在运行的镜像制作出相关的镜像:反向
根据镜像启动一个容器:正向
1.去镜像市场搜镜像(docker hub)
2.下载镜像docker pull  镜像 
3.启动镜像docker run 镜像 
---------------------------------------------------------
对于镜像的所有管理操作,都在docker image(s) --help

Docker pull redis == docker pull redis:latest (最新版)
#阿里云的镜像是从docker hub来的 ,我们配置了镜像加速器,默认是从阿里云(缓存)下载的

REPOSITORY(名)  TAG(标签)  IMAGE ID(镜像ID)  CREATED(镜像构建时间)  SIZE(大小)

-----------------------------------------------------
#镜像是怎么做成的:基础环境+软件
redis的完整镜像应该是:linux系统+ redis软件
alpine:超级经典的linux 5mb +redis =29.0mb
没有alpine3的,就是centos基本版

#以后自己选择下载镜像的时候
alpine 
----------------------------------------------------
docker rmi 镜像名   删除镜像    docker rmi -f 强制删除镜像
docker ps -a 查看所有镜像
先停止容器,才能在删除镜像
----------------------------------------------------
busybox镜像封装了centos的许多工具

docker rmi -f $(docker images -aq)  #删除全部镜像
docker image prune  #移除游离镜像   
------------------------------------------------
docker tag 原镜像:标签 新镜像:标签 镜像ID一样同一个镜像,名称不同
docker create redis 创建一个容器,依据redis镜像,需要手动启动
docker create --name myredis -p 6379(主机端口):6379(容器端口) redis
只是创建,没有启动   docker start ID 或者容器名
docker pause 停止一个容器   docker unpause 重启一个容器
容器的状态
create 创建  pause 停止  up启动  unpause 重启
docker kill 是强制删除  docker stop 优雅停止
--------------------------
-p Port1:Port2
port1是必须的唯一的,port2是没关系的
docker run --name myredis2 -p 6379:6379 -p 8888:6379 redis 依托reids镜像 启动并创建一个容器,不需要手动启动
默认是前台启动的,一般加上-d 让他后台悄悄启动
docker run -d ==docker create + ddocker start 
docker容器(小型的linux系统)
----------------------------------------
docker logs 容器名     查看容器之前在前台输出的日志
前台查看的日志都可以在docker logs 里面查看
docker logs -f nginx  追踪查看日志
-------------------------------------
#启动了nginx 一个容器,docker容器里面安装了nginx,要对nginx的所有修改都要进容器
docker attach 绑定的是控制台,如果绑定的控制台停止,会导致停止容器
docker exec --help   进入容器的方式
docker exec -it -u 0:0 容器名(ID)   -u 0:0  以特权方式进入
docker exec -it -u 0:0 --privileged mynginx /bin/bash
exit推出容器,退出并不会导致容器停止
---------------------------------------
docker container inspect 容器名
docker image inspect  镜像 
--------------------------------------
docker cp 容器和外部相互复制
docker cp  文件  容器:路径   把外部的文件复制进去
docker cp  容器:路径  文件    把容器的文件复制出来
-----------------------------------
diff  检查容器里面的文件的更改(增删改查)

docker commit 把容器的改变提交创建一个新的镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker commit -a 容器名 -m  "first commit" mynginx mynginx:v4
#一般运行中的容器会常年修改,我们要使用最终的新镜像就需要用到docker commit
#把新的镜像放到自己的仓库,方便使用与保存

游离镜像(空悬镜像):none 
--------------------------------------
推送镜像
1.注册docker hub 并登录
2.可以创建一个仓库,public
3.docker hub 一个完整镜像的全路径
4.docke.io/libary/redis:alpine3.13 我们的docker.io/xy/mynginx:tagname
5.docker images 的时候缩略了全名,默认了官方镜像没有docker.io/libary
6.docker.io/xy/mynginx:v4  我的镜像的全称
7.登陆远程docker仓库  
8.当前会话登录以后docker login ,所有的东西都会push到这个人的仓库
9.docker push 全称xy/mynginx:v4 
10.怎么知道是否登陆了:cat ~/.docker/config.json 看有没有auth的值

docker hub的仓库可能太慢了,可以创建一个自己的仓库,或者使用阿里云等的docker仓库

-----------------------------------------
docker export 导出镜像
docker export [OPTIONS] CONTAINER
docker export -o nginx.tar 容器 

docker import 导入镜像  导入tar的内容创建一个镜像,再导入进来的镜像直接启动不了容器
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

docker export导出的文件被import导入以后变成镜像,并不能直接启动容器,需要知道之前的启动命令
1.查看容器之前的启动命令 
2.docker ps --no-trunc
3.docker image inspect 镜像  查看之前的镜像,把之前镜像的entrypoint+cmd 连接起来的命令
4.运行示例:docker run -d -p mynginx:v6 /docker-entrypoint.sh nginx -g 'daemon off;'
---------------------------------------------
save和
docker save [OPTIONS] IMAGE [IMAGE...]
docker save -o busybox.tar busybox:latest  把busybox
docker load  -i(读取文件)  busybox.tar 
docker load [OPTIONS]
可以直接运行
--------------------------------------------
镜像为什么能够长久运行
镜像启动一定的又一个阻塞的进程,一直干活,在这里做代理
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run --name myredis2 -p 6379:6379 redis
镜像启动以后做镜像里面默认规定的话

docker -it redis   :以交互模式进入当前镜像启动的容器
docker run -d busybox ping www.baidu.com 容器运行之后一直在后台ping百度

--------------------------------------------
Dockerfile
1.基于已经存在的容器,,提取出镜像
2.人家给的tar包,导入成镜像
3.制作镜像
  1).准备一个文件Dockerfile
  2).编写Dockerfile
  3).构建镜像
docker build -t mynginx:v6 -f Dockerfile .
---------------------------------------------

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Akers119

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

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

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

打赏作者

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

抵扣说明:

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

余额充值