Docker操作总结

这篇博客总结了Docker的安装、基本组成、镜像和容器的概念,以及常用命令。探讨了Docker为何比虚拟机更快,并介绍了数据卷、容器网络和容器化应用的实践,如部署Redis集群和使用Docker Compose管理多容器应用。
摘要由CSDN通过智能技术生成

参考视频
部分参考《深入浅出Docker》

安装Docker

Docker基本组成

image-20211208120934290

镜像(image): 模板->run->容器

容器(container): 独立运行一个或一组应用

仓库(repository): 存放镜像的仓库

安装Docker

uname -r #打印内核release。
cat /etc/os-release # 查看系统版本信息
# Uninstall old versions
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
# 安装需要的安装包
yum install -y yum-utils
# 设置镜像的仓库
yum-config-manager  --add-repo  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新软件包索引
yum makecache fast
# 安装Docker
yum install docker-ce docker-ce-cli containerd.io
# 启动Docker
systemctl start docker
# 查看Docker版本
docker version
# 测试Docker run
docker run hello-world
# 查看镜像
docker images
# 卸载Docker
	# 卸载依赖
	yum remove docker-ce docker-ce-cli containerd.io
	# 删除资源
	rm -rf /var/lib/docker # Docker的默认工作目录
	rm -rf /var/lib/containerd

阿里云镜像加速

# 镜像加速器
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

image-20211208123959327

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://52gt3cq1.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Docker 操作

Docker原理

Docker run原理图

image-20211208124246272

底层原理

Docker-server运行在主机,Docker-client通过socket连接服务器

image-20211208124547800

Docker为什么比VM快?

  1. Docker拥有比虚拟机更少的抽象层
  2. Docker利用宿主机的内核,VM需要自己虚拟一个内核,更快

image-20211212215620268

Docker常用命令

帮助命令

docker version # docker 版本信息
docker info # 显示 Docker 系统信息,包括镜像和容器数
docker 命令 --help

镜像命令

docker images # 查看docker所有镜像
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
-f :显示满足条件的镜像;
	--format :指定返回值的模板文件;
	--no-trunc :显示完整的镜像信息;
-q :只显示镜像ID。

docker search # 从Docker Hub查找镜像
--filter : 过滤 
	# docker search --filter=stars=3000 mysql
--automated :只列出 automated build类型的镜像;
--no-trunc :显示完整的镜像描述;
-s :列出收藏数不小于指定值的镜像。

docker pull [OPTIONS] NAME[:TAG|@DIGEST] # 从镜像仓库中拉取或者更新指定镜像 默认latest版本
-a :拉取所有 tagged 镜像
--disable-content-trust :忽略镜像的校验,默认开启

docker rmi [OPTIONS] IMAGE [IMAGE...]#删除本地一个或多少镜像。
-f :强制删除;
--no-prune :不移除该镜像的过程镜像,默认移除;
# 删除全部镜像 docker rmi -f $(docker images -aq)

容器命令

#创建一个新的容器并运行一个命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 
# OPTIONS说明
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;#!!!
-i: 以交互模式运行容器,通常与 -t 同时使用;#!!!
-p: 端口映射,格式为:[主机IP:][主机端口:]容器端口#!!!
-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=[]: 开放一个端口或一组端口;
--rm : 用完即删(测试用)
# 退出容器
exit # 停止并退出
ctrl+P+Q #退出(但不关闭)容器
#列出容器
docker ps [OPTIONS] 
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
	# docker ps -n=1
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
#删除容器 不能删除正在运行的容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]# 删除一个或多少容器
-f :通过SIGKILL信号强制删除一个运行中的容器 # 强制删除
-l :移除容器间的网络连接,而非容器本身
-v :-v 删除与容器关联的卷
# docker ps -a -q|xargs docker rm 删除所有容器
# Docker start/stop/restart 命令
docker start 容器id或name#启动一个或多个已经被停止的容器
docker stop #停止一个运行中的容器
docker restart #重启容器
docker kill # 杀死容器

其他常用命令

# 后台启动应用
docker run -d image
# 注意:docker容器在后台巡行时需要一个前台应用,否则会自动停止
#查看日志
docker logs [OPTIONS] CONTAINER 
-f : 跟踪日志输出
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志
# docker run -d centos /bin/bash -c "while true;do echo raja;sleep 1;done"
# docker logs -ft ...
# 查看容器中运行的进程信息,支持 ps 命令参数
docker top [OPTIONS] CONTAINER [ps OPTIONS]
# 注:容器运行时不一定有/bin/bash终端来交互执行top命令,而且容器还不一定有top命令,可以使用docker top来实现查看container中正在运行的进程。
# `-f --filter`格式化参数
//链接: https://www.jianshu.com/p/3a69fe0a9c41
$ docker ps --filter name=nginx
$ docker ps -a --filter exited=0
$ docker ps --filter status=running
$ docker ps --filter expose=3306
$ docker image ls --filter reference=golang:* # 根据镜像名查询

image-20211208134903222

# 获取容器/镜像的元数据。
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
-f :指定返回值的模板文件。
-s :显示总的文件大小。
--type :为指定类型返回JSON。
[
    {
   
        "Id": "8b0655f0205b03582320875af806085960214f8c178033cecf37ff183588def2",
        "Created": "2021-12-08T05:47:55.318532107Z",
        "Path": "/bin/bash",
        "Args": [
            "-c",
            "while true;do echo raja;sleep 1;done"
        ],
        "State": {
   
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 15711,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-12-08T05:47:55.579745125Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
        "ResolvConfPath": "/var/lib/docker/containers/8b0655f0205b03582320875af806085960214f8c178033cecf37ff183588def2/resolv.conf",
        "HostnamePath": 
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值