百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

新手快速入门Docker,轻松掌握Docker安装与使用

mhr18 2025-04-11 01:27 52 浏览 0 评论

安装

使用官方安装脚本自动安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

手动安装

CentOS 7 (使用yum进行安装)

卸载旧版docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils
# Step 2: 添加软件源信息 (推荐使用下面阿里云源)
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 添加阿里云源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 开启一些选项 (这一步可跳过)
sudo yum-config-manager --enable docker-ce-nightly
sudo yum-config-manager --enable docker-ce-test
# 关闭选项
sudo yum-config-manager --disable docker-ce-nightly

# 安装 Docker-CE
sudo yum install docker-ce docker-ce-cli containerd.io

验证

sudo docker version

启动docker

sudo systemctl start docker

读者福利:关注小编+转发文章+私信【项目】获取整理好的100+个Java项目视频+源码+笔记

配置镜像加速器

可以上阿里云获取个人加速地址

https://dev.aliyun.com/
https://cr.console.aliyun.com/cn-shenzhen/instances/mirrors


修改
daemon配置文件/etc/docker/daemon.json使用加速器

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

重启

sudo systemctl daemon-reload
sudo systemctl restart docker

hello world

docker run hello-world

命令

查看帮助

docker --help
Usage:	docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST
                           env var and default context set with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  builder     Manage builds
  config      Manage Docker configs
  container   Manage containers
  context     Manage contexts
  engine      Manage the docker engine
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.

查看指定命令帮助

docker images --help
Usage:	docker images [OPTIONS] [REPOSITORY[:TAG]]

List images

Options:
  -a, --all             Show all images (default hides intermediate images)
      --digests         Show digests
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print images using a Go template
      --no-trunc        Don't truncate output
  -q, --quiet           Only show numeric IDs

常用命令

查看本地镜像

docker images
docker images -a # 查看本地所有镜像(包括悬空镜像)
docker images -q # 查看本地镜像的镜像ID信息
docker images -qa
docker images --digests # 显示镜像的摘要写信息
docker images --no-trunc # 查看完整的镜像信息

搜索镜像

docker search nginx

搜索点赞数>30的镜像

docker search -s 30 nginx
docker search --filter=stars=20 nginx

列出自动构建的镜像

docker search --automated nginx
docker search --filter=is-automated=true nginx

拉取镜像

docker pull nginx == docker pull nginx:latest
docker pull nginx:3.2

删除镜像

docker rmi hello-world

强制删除镜像

docker rmi -f hello-world

删除多个镜像

docker rmi -f hello-world nginx

删除全部镜像

docker rmi -f $(docker images -qa)
1

容器命令

容器不但可以包含软件, 容器也可以包含一个操作系统

docker search centos

新建并运行容器

docker run

查看帮助

docker run --help
# Usage:	docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

运行容器

docker run -it centos
docker run -it centos /bin/bash

-i: 以交互模式启动容器, 和-t搭配使用

-t: 为容器重新分配一个输入终端

docker run -it 0d120b6ccaa8

指定容器新名字

docker run -it --name mycentos centos

查看正在运行的容器

docker ps

查看正在运行+历史运行过的容器

docker ps -a

查看上一次运行的容器

docker ps -l
docker ps -lq

查看最近2次运行的容器

docker ps -n 2

关闭并退出容器

exit

只退出不关闭容器

ctrl+p+q 

重启启动容器

docker start ID
docker start 04ac5ae5d5fb

停止容器

docker stop ID
docker stop 04ac5ae5d5fb

强制停止容器

docker kill ID

删除已停止的容器

docker rm ID

强制删除容器

docker rm -f ID

一次性所有容器

docker rm -f $(docker ps -qa)
1

以守护进程启动容器

docker run -d  centos # [这样会马上退出]

不退出

docker run -d centos /bin/sh -c "while true; do echo hello soul; sleep 2; done"

查看容器日志

docker logs ID
docker logs -f -t --tail 100 ID

查看容器内运行的进程

docker top ID
docker top e7574dd446d6

查看容器内部细节

docker inspect ID

进入正在运行的容器

docker attach ID
docker exec -t ID /bin/bash

直接容器执行命令

docker exec -t  ID ls -l /tmp

从容器拷贝文件到主机上

# docker cp 容器ID:容器内路径 目的主机路径
docker cp 04ac5ae5d5fb:/mnt/test.log /data1

生成新镜像副本

# docker commit 提交容器副本成为一个新的镜像
# docker commit -m="描述" -a="作者" 容器ID 镜像名:版本
docker commit -m="my tomcat" -a="soul" 04ac5ae5d5fb soul/go:1.0

运行自定义镜像

docker run -it -p 7777:8080 soul/tomcat:1.0

指定端口运行

# docker run -it -p 主机端口:容器端口 tomcat
docker run -it -p 8081:8080 tomcat

浏览器访问

http://localhost:8080

随机分配主机端口

docker run -it -P tomcat

后台运行

docker run -d -p 6666:8080 tomcat

指定容器数据卷启动 (等于主机目录挂载到容器指定目录)

# docker run -it -v 主机目录:容器目录 镜像名
docker run -it -v /mydata:/mydata centos

只读权限

docker run -it -v /mydata:/mydata:ro centos

容器数据卷共享

docker run -it --name dc01 soul/centos
docker run -it --name dc02 --volumes-from dc01 soul/centos
docker run -it --name dc03 --volumes-from dc01 soul/centos

Redis运行容器

docker run -p 6379:6379
-v /data1/redis/data:/data
-v /data1/redis/conf/redis.conf:/usr/locak/etc/redis/redis.conf
-d redis:5.0.10 redis-server /usr/local/etc/redis/redis.conf
--appendonly yes

MySQL运行容器

docker run -p 12345:3306 --name mysql 
-v /data1/mysql/conf:/etc/mysql/conf.d
-v /data1/mysql/logs:/logs
-v /data1/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456
-d mysql:5.6

备份数据库

docker exec 04ac5ae5d5fb sh -C 'exec mysqldump --all-databases -uroot -p"123456"' > /data1/all-databases.sql

读者福利:关注小编+转发文章+私信【项目】获取整理好的100+个Java项目视频+源码+笔记

提交镜像到阿里云

登录阿里云Docker Registry

$ sudo docker login --username=uisoul registry.cn-shenzhen.aliyuncs.com

用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

您可以在访问凭证页面修改凭证密码。

从Registry中拉取镜像

$ sudo docker pull registry.cn-shenzhen.aliyuncs.com/uisoul/gocentos:[镜像版本号]

将镜像推送到Registry

$ sudo docker login --username=uisoul registry.cn-shenzhen.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/uisoul/gocentos:[镜像版本号]
$ sudo docker push registry.cn-shenzhen.aliyuncs.com/uisoul/gocentos:[镜像版本号]

请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。

作者:IM魂影
原文:
imsoul.blog.csdn.net/article/details/110531103

相关推荐

Redis合集-使用benchmark性能测试

采用开源Redis的redis-benchmark工具进行压测,它是Redis官方的性能测试工具,可以有效地测试Redis服务的性能。本次测试使用Redis官方最新的代码进行编译,详情请参见Redis...

Java简历总被已读不回?面试挂到怀疑人生?这几点你可能真没做好

最近看了几十份简历,发现大部分人不是技术差,而是不会“卖自己”——一、简历死穴:你写的不是经验,是岗位说明书!反面教材:ד使用SpringBoot开发项目”ד负责用户模块功能实现”救命写法:...

redission YYDS(redission官网)

每天分享一个架构知识Redission是一个基于Redis的分布式Java锁框架,它提供了各种锁实现,包括可重入锁、公平锁、读写锁等。使用Redission可以方便地实现分布式锁。red...

从数据库行锁到分布式事务:电商库存防超卖的九重劫难与破局之道

2023年6月18日我们维护的电商平台在零点刚过3秒就遭遇了严重事故。监控大屏显示某爆款手机SKU_IPHONE13_PRO_MAX在库存仅剩500台时,订单系统却产生了1200笔有效订单。事故复盘发...

SpringBoot系列——实战11:接口幂等性的形而上思...

欢迎关注、点赞、收藏。幂等性不仅是一种技术需求,更是数字文明对确定性追求的体现。在充满不确定性的网络世界中,它为我们建立起可依赖的存在秩序,这或许正是技术哲学最深刻的价值所在。幂等性的本质困境在支付系...

如何优化系统架构设计缓解流量压力提升并发性能?Java实战分享

如何优化系统架构设计缓解流量压力提升并发性能?Java实战分享在高流量场景下。首先,我需要回忆一下常见的优化策略,比如负载均衡、缓存、数据库优化、微服务拆分这些。不过,可能还需要考虑用户的具体情况,比...

Java面试题: 项目开发中的有哪些成长?该如何回答

在Java面试中,当被问到“项目中的成长点”时,面试官不仅想了解你的技术能力,更希望看到你的问题解决能力、学习迭代意识以及对项目的深度思考。以下是回答的策略和示例,帮助你清晰、有说服力地展示成长点:一...

互联网大厂后端必看!Spring Boot 如何实现高并发抢券逻辑?

你有没有遇到过这样的情况?在电商大促时,系统上线了抢券活动,结果活动刚一开始,服务器就不堪重负,出现超卖、系统崩溃等问题。又或者用户疯狂点击抢券按钮,最后却被告知无券可抢,体验极差。作为互联网大厂的后...

每日一题 |10W QPS高并发限流方案设计(含真实代码)

面试场景还原面试官:“如果系统要承载10WQPS的高并发流量,你会如何设计限流方案?”你:“(稳住,我要从限流算法到分布式架构全盘分析)…”一、为什么需要限流?核心矛盾:系统资源(CPU/内存/数据...

Java面试题:服务雪崩如何解决?90%人栽了

服务雪崩是指微服务架构中,由于某个服务出现故障,导致故障在服务之间不断传递和扩散,最终造成整个系统崩溃的现象。以下是一些解决服务雪崩问题的常见方法:限流限制请求速率:通过限流算法(如令牌桶算法、漏桶算...

面试题官:高并发经验有吗,并发量多少,如何回复?

一、有实际高并发经验(建议结构)直接量化"在XX项目中,系统日活用户约XX万,核心接口峰值QPS达到XX,TPS处理能力为XX/秒。通过压力测试验证过XX并发线程下的稳定性。"技术方案...

瞬时流量高并发“保命指南”:这样做系统稳如泰山,老板跪求加薪

“系统崩了,用户骂了,年终奖飞了!”——这是多少程序员在瞬时大流量下的真实噩梦?双11秒杀、春运抢票、直播带货……每秒百万请求的冲击,你的代码扛得住吗?2025年了,为什么你的系统一遇高并发就“躺平”...

其实很多Java工程师不是能力不够,是没找到展示自己的正确姿势。

其实很多Java工程师不是能力不够,是没找到展示自己的正确姿势。比如上周有个小伙伴找我,五年经验但简历全是'参与系统设计''优化接口性能'这种空话。我就问他:你做的秒杀...

PHP技能评测(php等级考试)

公司出了一些自我评测的PHP题目,现将题目和答案记录于此,以方便记忆。1.魔术函数有哪些,分别在什么时候调用?__construct(),类的构造函数__destruct(),类的析构函数__cal...

你的简历在HR眼里是青铜还是王者?

你的简历在HR眼里是青铜还是王者?兄弟,简历投了100份没反应?面试总在第三轮被刷?别急着怀疑人生,你可能只是踩了这些"隐形求职雷"。帮3630+程序员改简历+面试指导和处理空窗期时间...

取消回复欢迎 发表评论: