1. Docker常见解析
1.1 拉取镜像
docker pull redis
解析:
命令与docker pull redis:latest相同,阿里云的镜像是从docker hub来的,如果配置了加速,默认是从阿里云(缓存)下载。
镜像是由基础环境+软件组成的。
redis的完整镜像应该是: linux系统+redis软件
alpine:超级经典版的linux 5mb;+ redis = 29.0mb
没有alpine3的:就是centos基本版
自己选择下载镜像的时候尽量使用 alpine: slim:
REPOSITORY(名) TAG (标签) IMAGE ID(镜像id) CREATED(镜像的创建时间) SIZE
redis 5.0.12-alpine3.13 50ae27fed589 6 days ago 29.3MB
redis latest 621ceef7494a 2 months ago 104MB
1.2 删除镜像
docker rmi -f $(docker images -aq) #删除全部镜像
docker image prune #移除游离镜像 dangling:游离镜像(没有镜像名字的)
1.3 创建容器
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
docker create [设置项] 镜像名 [启动] [启动参数...]
docker create redis: 按照redis:latest镜像启动一个容器
docker create --name myredis -p 6379(主机的端口):6379(容器的端口) redis
-p port1:port2 【port1是必须唯一的,port2是没关系的】
1.4 运行容器
docker run --name myredis2 -p 6379:6379 -p 8888:6379 redis
默认是前台启动的,一般加上-d 让他后台悄悄启动, 虚拟机的很多端口绑定容器的一个端口是允许的
docker run -d == docker create + docker start
docker create --name myredis -p 6379(主机的端口):6379(容器的端口) redis
-p port1:port2 【port1是必须唯一的】
1.5 进入容器
docker exec -it -u 0:0 --privileged mynginx4 /bin/bash: 0用户,以特权方式进入容器
1.6 查看容器配置
docker container inspect 容器名 = docker inspect 容器
docker inspect image /network/volume ....
1.7 容器提交
docker commit -a leifengyang -m "first commit" mynginx4 mynginx:v4
1.8 导入导出容器
docker export导出的文件被import导入以后变成镜像,并不能直接启动容器,需要知道之前的启动命令(docker ps --no-trunc),然后再用下面启动。
1.9 save/load操作镜像
docker save -o busybox.tar busybox:latest 把busybox镜像保存成tar文件
docker load -i busybox.tar 把压缩包里面的内容直接导成镜像
1.10 产生镜像的步骤
- 基于已经存在的容器,提取成镜像
- 人家给了我tar包,导入成镜像
- 做出镜像
- 准备一个文件 Dockerfile
ROM busyboxCMD ping baidu.com - 编写 dockerfile
- 镜像 docker build -t mybusy66:v6 -f Dockerfile .
2. Docker常见命令【查阅】
参考资料 :Docker命令手册
| 命令 | 描述 |
|---|---|
docker build (legacy builder) | 从 Dockerfile 构建映像 |
docker builder | 管理构建 |
docker buildx | Docker Buildx |
docker checkpoint | 管理检查点 |
docker compose | Docker 组成 |
docker config | 管理 Swarm 配置 |
docker container | 管理容器 |
docker context | 管理上下文 |
docker debug | 将 shell 放入任何容器或镜像中。使用“docker exec”进行调试的替代方法。 |
docker image | 管理图像 |
docker init | 为你的项目创建与 Docker 相关的启动文件 |
docker inspect | 返回有关 Docker 对象的低级信息 |
docker login | 登录注册表 |
docker logout | 从注册表注销 |
docker manifest | 管理 Docker 映像清单和清单列表 |
docker network | 管理网络 |
docker node | 管理 Swarm 节点 |
docker plugin | 管理插件 |
docker scout | Docker Scout 的命令行工具 |
docker search | 在 Docker Hub 中搜索镜像 |
docker secret | 管理 Swarm 机密 |
docker service | 管理 Swarm 服务 |
docker stack | 管理 Swarm 堆栈 |
docker swarm | 管理 Swarm |
docker system | 管理 Docker |
docker trust | 管理对 Docker 映像的信任 |
docker version | 显示 Docker 版本信息 |
docker volume | 管理卷 |
3.推送镜像的命令
-
容器状态
- Created(新建)
- Up(运行中)
- Pause(暂停)
- Exited(退出)
-
推送镜像
- 注册docker hub并登录
- 可以创建一个仓库,选为public
- docker push linfang/mynginx:tagname
- docker hub一个完整镜像的全路径是
- docker.io/library/redis:alpine3.13 我们的 docker.io/linfang/mynginx:tagname
- docker images的时候镜像缩略了全名 默认官方镜像没有docker.io/library/
- docker.io/ rediscommander / redis-commander:latest
- docker.io/linfang/mynginx:v4 我的镜像的全称
- 登录远程docker仓库
- 当前会话登录以后 docker login 。所有的东西都会push到这个人的仓库
- docker push linfang/mynginx:tagname
- 上面命令的完整版 docker push docker.io/linfang/mynginx:v4
- 怎么知道是否登录了 cat ~/.docker/config.json 有没有 auth的值,没有就是没有登录
-
docker hub太慢了,用阿里云的镜像仓库,或者以后的habor仓库
sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/linfang/mynginx: [镜像版sudo docker push registry.cn-hangzhou.aliyuncs.com/linfang/mynginx:[镜像版本号] 仓库网址/名称空间(linfang/linfang)/仓库名:版本号4.典型命令
docker run 常见的options说明:
- -d: 后台运行容器,并返回容器ID;
- -i: 以交互模式运行容器,通常与 -t 同时使用;
- -P: 随机端口映射,容器内部端口随机映射到主机的端口
- -p:指定端口映射,格式为:主机(宿主)端口:容器端口
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
- --name="nginx-lb":为容器指定一个名称;
- --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
- --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
- -h "mars": 指定容器的hostname;
- -e username="ritchie": 设置环境变量;
- --env-file=[]: 从指定文件读入环境变量;
- --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
- -m :设置容器使用内存最大值;
- --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
- --link=[]: 添加链接到另一个容器;
- --expose=[]: 开放一个端口或一组端口;
- --restart , 指定重启策略,可以写--restart=awlays 总是故障重启
- --volume , -v: 绑定一个卷。一般格式 主机文件或文件夹:虚拟机文件或文件夹