水军大提督 发表于 2024-7-25 09:49:35

docker笔记

https://i-blog.csdnimg.cn/direct/dadaf6fdbb454bf8b40c76a66bdc8903.png
docker安装
不知道为什么docker官网没有centos的文档了。。。
# 移除旧版本
yum remove docker*

# docker必须安装的一些必备的工具
yum install -y yum-utils

# 配置docker yum源地址
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
docker分为两个版本,,一个是ce:社区版本 ,一个是ee :企业版
#安装最新版本docker ... docker-ce是社区版 ,docker-ce-cli:docker的客户端
#我们发的命令就是在客户端发的,客户端发送到 docker-daemon服务端,服务端再根据收到的命令调用docker内部接口。。。containerd.io : Docker 使用的一个核心组件,它是一个容器运行时接口(CRI)的实现
yum install docker-ce docker-ce-cli containerd.io


# 展示docker-ce的yum源
yum list docker-ce --showduplicates | sort -r

# 安装指定版本的docker
yum install docker-ce-3:19.03.14-3.el8.x86_64 ...
还有docker-ce-cli指定版本,, containerd.io ,, 我安装docker-ce-cli-xxx提示版本找不到
如果只指定docker-ce版本,,docker-ce-cli会用最新版本

# 查看版本
docker version
https://i-blog.csdnimg.cn/direct/22cbdc846d174372a15234ba3f551e3e.png
docker常用命令:
systemctl start docker
# 开启启动
systemctl enable docker
docker配置阿里云镜像加快地点: 打开阿里云官网,搜索容器镜像服务,,将里面的脚本执行一遍,,这个脚本就会将阿里云镜像加快地点配置到/etc/docker/daemon.json中,,这个文件是docker的核心配置文件
docker images
docker image ls
docker pull
docker pull redis:latest
# 删除镜像,, 如果镜像有容器存在,删除不掉。 -f强制删除,
docker rmi redis:latest

docker ps -a

docker rmi --help
docker rmi -f $(docker images -aq)

# 移除游离镜像,, 比如说在将容器commit成一个镜像的时候,,重复commit,后面的会把前面的覆盖掉,而前面的变成了没有名字的游离镜像
docker image prune

# image复制并且命名
docker tag 原镜像:标签 新镜像:标签
容器的状态:


[*]up:运行中
[*]create : 已创建
[*]pause : 暂停
[*]exited : 退出
# 创建容器
docker create 镜像名字
docker create [控制项] 镜像名 启动命令[启动参数]

docker create -p 主机端口:容器端口

-P : 随机端口

#暂停容器
docker pause
#恢复暂停
docker unpause

# 优雅的停止
docker stop
# 强制退出
docker kill

# 一个容器可以映射多个 主机端口
docker run -p 6379:6379 -p 8888:6379 redis

# 打印日志
docker logs
# 日志follow
docker logs -f

# 绑定容器控制台
docker attach

docker exec
        -i : 交互模式 interactive
        -t : tty 重新开启一个终端
        -u : 以哪一种用户身份进去

# 以0号用户,0号组进去,,也就是root
docker exec -it -u 0:0mynginx /bin/bash
# --privileged 最高权限进去
docker exec -it --privileged mynginx /bin/bash
# 进去之后控制台输入id,, 查看uid:用户ID,gid :用户组ID,groups 用户所属的其他用户组。

# 查看状态
docker inspect
docker inspect images

# 拷贝内容
docker cp
# 复制index.html到 mynginx容器里面的/usr/share/nginx/html   目录下: 如果这个不是目录,,不会自动创建目录,而是直接拷贝
docker cp index.html mynginx:/usr/share/nginx/html
# 将容器总的文件复制到 虚拟机中
docker cp mynginx:/etc/nginx/nginx.conf nginx.conf


# 比较容器和最开始镜像生成的容器有什么不同,,检查容器的 增删改
docker diff
D: delete.C : change. A:add

# 修改了容器之后,可以将容器变成一个新的镜像
docker commit
# -a :作者是谁 -m:提交的message       容器名字。镜像名字:标签
docker commit -a waterkid -m "first" mynginx waterkid:v1

当容器发生变化之后,如果我们后来还要以新的容器为准,就需要提交一个镜像,,多次提交,会覆盖掉之前提交的镜像,,之前的镜像会变成游离镜像,,docker image prune 清除


将镜像放在docker hub 中:
需要在docker hub 上注册一个账号,镜像名就是仓库名,,,
docker hub中一个完备官方镜像的全路径是 docker.io/library/redis:alpine
我们的镜像是将中心的library变成自己的用户名
docker.io/waterkid01/mynginx:v1
官方的镜像名字,,前面不需要带用户名,,而自己写的镜像,需要带自己的用户名,如果要上传到docker hub中的话,,
https://i-blog.csdnimg.cn/direct/f86cbe87d45e4056924733c38ec6a006.png
首先需要将镜像改成waterkid01/mynginx
docker tag waterkid:v1waterkid01/mynginx:v1

# 登录docker hub
docker login

# 推送
docker push waterkid01/mynginx:v1
我的推送总是重试,,
docker导入导出,有两种方式:
第一种是将容器变成tar,, docker export,,,docker import
第二种是将镜像变成tar。。。 docker save,,, docker load
# 将 nginx01容器 ===》 nginx.tar   -o :output
docker export -o nginx.tar nginx01

# 将tar变成镜像
docker import nginx.tar mynginx:v6

这样生成的镜像,,直接启动容器是不行的,,缺少启动命令。。需要查看之前容器的启动命令
docker inspect nginx01


https://i-blog.csdnimg.cn/direct/d278002b67254ea3b87b412db60db8c4.png
# 不截断输出,也可以看到启动命令
docker ps --no-trunc

运行import导入的镜像,,需要将原来容器的启动命令,,加在这个启动容器后面
docker run -P mynginx:v6 /docker-entrypoint.sh nginx -g 'daemon off;'
# 将镜像保存成tar,,可以是多个镜像
docker save -o waterkid.tar waterkid:v1
# 将tar导出为镜像
docker load -i waterkid.tar
每一个镜像,一启动都会有镜像默认干的活,,,在cmd中
从0到1制作镜像
编写Dockerfile
from busybox
CMD ping baidu.com
# 自己做一个镜像 ,打包成mybusy:v6镜像-f:指定是那个Dockerfile./ 这里面的所有操作都是在 ./ 这个路径下执行
docker build -t mybusy:v6 -f Dockerfile ./

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: docker笔记