Docker命令超级大全、安装docker、配置国内下载源

本文详细介绍了Docker的安装步骤、配置国内镜像源的方法、常见命令的使用技巧及Docker容器的基本操作,帮助读者快速掌握Docker的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Docker

docker安装
https://docs.docker.com/get-docker/
https://docs.docker.com/engine/install/centos/
在这里插入图片描述

a. 卸载旧版本

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

上面卸载不干净,使用下面的
首先停止运行docker服务

systemctl stop docker

查询

[root@bogon ~]# yum list installed |grep docker
containerd.io.x86_64                  1.4.12-3.1.el7                  @docker-ce-stable
docker-ce.x86_64                      3:20.10.12-3.el7                @docker-ce-stable
docker-ce-cli.x86_64                  1:20.10.12-3.el7                @docker-ce-stable
docker-ce-rootless-extras.x86_64      20.10.12-3.el7                  @docker-ce-stable
docker-scan-plugin.x86_64             0.12.0-3.el7                    @docker-ce-stable

[root@bogon ~]# rpm -qa |grep docker
docker-scan-plugin-0.12.0-3.el7.x86_64
docker-ce-rootless-extras-20.10.12-3.el7.x86_64
docker-ce-cli-20.10.12-3.el7.x86_64
docker-ce-20.10.12-3.el7.x86_64

卸载yum list installed |grep docker查询的所有

[root@bogon ~]# yum -y remove containerd.io.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64 docker-ce-rootless-extras.x86_64 docker-scan-plugin.x86_64

再查就没有了

[root@bogon ~]# yum list installed|grep docker
[root@bogon ~]# rpm -qa |grep docker

b. 安装docker

1、查询可安装的版本

yum list docker-ce --showduplicates | sort -r

2、使用阿里云安装docker
https://developer.aliyun.com/mirror/docker-ce
3、使用存储库安装docker(官方文档)

# 设置存储库
# 安装yum-utils包(提供yum-config-manager 实用程序)并设置稳定存储库。
$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# 安装最新版本的 Docker Engine 和 containerd
$ sudo yum install docker-ce docker-ce-cli containerd.io

# 启动docker
$ sudo systemctl start docker

# 通过运行hello-world 映像验证 Docker Engine 是否已正确安装。
$ sudo docker run hello-world

# 开机定时启动docker
$ sudo systemctl enable docker

# 关闭docker服务
$ sudo systemctl stop docker

# 重启docker服务
$ sudo systemctl restart  docker

验证

[root@WzcWyt ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.16.12
 Git commit:        e91ed57
 Built:             Mon Dec 13 11:45:22 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.12
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.12
  Git commit:       459d0df
  Built:            Mon Dec 13 11:43:44 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

c. Docker配置国内镜像源

[root@bogon ~]# vi /etc/docker/daemon.json

在文件内添加

Docker中国区官方镜像:
https://registry.docker-cn.com
网易:
http://hub-mirror.c.163.com
中国科技大学:
https://docker.mirrors.ustc.edu.cn
阿里云:
https://cr.console.aliyun.com/

{
        "registry-mirrors": [
                "https://registry.docker-cn.com",
                "https://docker.mirrors.ustc.edu.cn",
                "http://hub-mirror.c.163.com",
                "https://cr.console.aliyun.com/"
        ]
}

保存后重启 Docker 以使配置生效

[root@bogon ~]# systemctl restart docker

1. Docker缺点

  • docker不适合做后台端操作系统兼容性测试,例如:centos6、centos7的兼容
  • docker不适合挑内核场景,例如:编译C++

2. Docker加速器

参考https://www.cnblogs.com/atuotuo/p/6264800.html

a. 登录阿里开发者平台

https://dev.aliyun.com/search.html
https://promotion.aliyun.com/ntms/act/kubernetes.html

b. 搜索docker

在这里插入图片描述
在这里插入图片描述
这里可以看到,系统已经为我们生成了一个专属加速器地址:https://xxxxx.mirror.aliyuncs.com

c. 根据个人需要, 选择运行Docker 的OS,按照要求修改Docker配置文件

在这里插入图片描述

$ vi /etc/docker/daemon.json
{
  "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}

# 重新加载配制
$ sudo systemctl daemon-reload
# 重新启动服务
$ sudo systemctl restart docker

3. Dockerhub镜像库

https://hub.docker.com/
在这里插入图片描述

4. Docker查询镜像及指定版本号安装

查询镜像:
docker search jenkins
指定版本安装:
docker pull mysql:5.7

5. Docker镜像重新打版本、重新命名

[root@WzcWyt ~]# docker tag mysql:5.7 mysql:5.7.1
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.

[root@WzcWyt ~]# docker images | grep mysql
docker.io/library/mysql        5.7         738e7101490b  13 days ago  454 MB
localhost/mysql                5.7.1       738e7101490b  13 days ago  454 MB

[root@WzcWyt ~]# docker tag mysql:5.7 mysqlmynew
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.

[root@WzcWyt ~]# docker images|grep mysql
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
docker.io/library/mysql        5.7         738e7101490b  13 days ago  454 MB
localhost/mysql                5.7.1       738e7101490b  13 days ago  454 MB
localhost/mysqlmynew           latest      738e7101490b  13 days ago  454 MB
[root@WzcWyt ~]# 

6. Docker保存镜像

docker save nginx > nginx.tar

7.Docker上传镜像

docker load < nginx.tar

8. 启动Docker容器

--name 指定容器名称
-d 后台运行
-port 指定端口映射规则
--network 指定容器运行的网路模式
-v 指定需要挂载的数据卷(用法:-v 宿主机目录:容器目录),宿主机上的目录,防止删除容器后数据消失,有新容器后可以直接挂载使用
-env 指定需要传递给容器的环境变量
-e 向容器内传递环境变量
-i 即使未连接,也保持标准DIN打开
-t 为容器分配一个伪TTY

docker run --name myjenkins -d -p 8080:8080 -v /home/suzhuji/jenkins_data:/var/jenkins jenkins/jenkins

9. 查看当前运行的容器

docker ps
docker ps -a
docker ps | grep mysql

10. 查看当前运行的容器占用的内存

docker ps -s

11. 强制删除运行中的容器

docker rm -f myjenkins

12. 查看容器日志

docker logs -f myjenkins

13. Docker查看帮助

docker --help
docker run --help

14. 进入容器交互

docker exec -it myjenkins bash

15. 让容器运行一条命令

docker exec myjenkins ping www.baidu.com

16. 列出所有容器的源信息,容器出错时使用

docker inspect myjenkins

17. 显示系统信息

docker info

18. 将容器内的文件复制到宿主机

docker cp myjenkins:/home/file.txt /home/test
docker cp /home/test myjenkins:/home/file.txt

19. 如何存储数据,msyql为例

https://hub.docker.com/,搜索官方镜像,找到存储路径
在这里插入图片描述

在这里插入图片描述

Docker命令

  用法:
  docker [选项] [命令]

选项:

选项描述
--cgroup-manager string要使用的Cgroup manager(“cgroupfs”|“systemd”)(默认为“systemd”)
--cni-config-dir stringCNI网络配置目录的路径(默认值“/usr/libexec/CNI”)
--conmon string康蒙二进制的路径
-c, --connection string用于远程播客服务的连接
--events-backend string要使用的事件后端(“文件”|“日志”|“无”)(默认为“文件”)
--help帮助播客
--hooks-dir strings设置OCI挂钩目录路径(可以多次设置)(默认值[/usr/share/containers/OCI/hooks.d])
--identity stringSSH标识文件的路径(容器\u SSHKEY)
--log-level string记录高于指定级别的消息(跟踪、调试、信息、警告、警告、错误、致命、死机)(默认为“警告”)
--namespace string设置libpod名称空间,用于在系统上创建容器和pod的单独视图
--network-cmd-path string用于配置网络的命令的路径
-r, --remote访问远程播客服务(默认为false)
--root string存储数据(包括图像)的根目录的路径
--runroot string存储所有状态信息的“运行目录”的路径
--runtime string用于运行容器的OCI兼容二进制文件的路径,默认为/usr/bin/runc
--runtime-flag stringArray为容器运行时添加全局标志
--storage-driver string选择用于管理图像和容器存储的存储驱动程序(默认为overlay)
--storage-opt stringArray用于将选项传递给存储驱动程序
--syslog将日志信息输出到syslog和控制台(默认为false)
--tmpdir stringlibpod状态内容的tmp目录的路径。
注意:使用环境变量“TMPDIR”更改容器映像的临时存储位置“/var/tmp”。
--url string访问Podman服务(容器主机)的URL(默认为“unix:/run/Podman/Podman.sock”)
-v, --version版本

可用命令:

命令描述
attach连接到运行的容器上
auto-update根据容器的自动更新策略自动更新容器
build使用ContainerFile中的说明构建映像
commit基于更改的容器创建新图像
container管理容器
cp在容器和本地文件系统之间复制文件/文件夹
create创建但不启动容器
diff显示对对象文件系统的更改
events显示播客事件
exec在正在运行的容器中运行进程
export将容器的文件系统内容导出为tar归档
generate基于容器、吊舱或卷生成结构化数据。
healthcheck管理容器的健康检查
help关于任何命令的帮助
history显示指定图像的历史记录
image管理图像
images列出本地存储中的图像
import导入tarball以创建文件系统映像
info显示播客系统信息
init初始化一个或多个容器
inspect显示由ID表示的对象的配置
kill使用特定信号杀死一个或多个正在运行的容器
load从tar存档加载图像
login登录到容器注册表
logout注销容器注册表
logs获取一个或多个容器的日志
machine管理虚拟机
manifest操作清单列表和图像索引
mount装载工作容器的根文件系统
network管理网络
pause暂停一个或多个容器中的所有进程
play播放结构化文件中的容器、播客或卷。
pod管理豆荚
port列出容器的端口映射或特定映射
ps列出容器
pull从注册表中提取图像
push将图像推送到指定的目标
rename重命名现有容器
restart重新启动一个或多个容器
rm移除一个或多个容器
rmi从本地存储中删除一个或多个映像
run在新容器中运行命令
save将图像保存到存档
search在注册表中搜索图像
secret管理秘密
start启动一个或多个容器
stats显示容器资源使用统计信息的实时流
stop停止一个或多个容器
system管理播客
tag向本地映像添加其他名称
top显示容器的运行进程
unmount卸载工作容器的根文件系统
unpause在一个或多个容器中取消暂停进程
unshare在修改的用户命名空间中运行命令
untag从本地映像中删除名称
version显示播客版本信息
volume管理卷
wait在一个或多个容器上阻塞

Docker run文档

说明:
从给定图像在新容器中运行命令

用法:
docker run [选项] 图像 [命令[ARG…]]

示例:
  podman run imageID ls -alF /etc
  podman run --network=host imageID dnf -y install java
  podman run --volume /var/hostdir:/var/ctrdir -i -t fedora /bin/bash

选项:

选项描述
--add-host strings添加自定义主机到IP映射(主机:IP)(默认值[])
--annotation strings向容器添加批注(键:值)
--arch ARCH使用ARCH而不是机器的架构来选择图像
-a, --attach strings连接到标准输入、标准输出或标准输出
--authfile string身份验证文件的路径。使用REGISTRY_AUTH_FILE环境变量覆盖
--blkio-weight string块IO权重(相对权重)接受介于10和1000之间的权重值。
--blkio-weight-device DEVICE_NAME:WEIGHT块IO重量(相对设备重量,格式:设备名称:重量)
--cap-add strings向容器添加功能
--cap-drop strings从容器中删除功能
--cgroup-conf strings配置cgroup v2(键=值)
--cgroup-parent string容器的可选父cgroup
--cgroupns string要使用的cgroup命名空间
--cgroups string控件容器cgroup配置(“已启用”|“已禁用”|“无conmon”|“拆分”)(默认为“已启用”)
--cidfile string将容器ID写入文件
--conmon-pidfile string将接收conmon PID的文件的路径
--cpu-period uint限制CPU CFS(完全公平调度程序)周期
--cpu-quota int限制CPU CFS(完全公平调度程序)配额
--cpu-rt-period uint以微秒为单位限制CPU实时周期
--cpu-rt-runtime int以微秒为单位限制CPU实时运行时间
--cpu-shares uintCPU份额(相对权重)
--cpus floatCPU的数量。默认值为0.000,表示没有限制
--cpuset-cpus string允许执行的CPU(0-3,0,1)
--cpuset-mems string允许执行的内存节点(MEMs)(0-3,0,1)。仅对NUMA系统有效。
-d, --detach在后台运行容器并打印容器ID
--detach-keys [a-Z]覆盖用于分离容器的键序列。Format是单个字符[a-Z]或用逗号分隔的序列ctrl-<value>,其中 <value>a-cf@^[\]^_ 之一(默认为"ctrl-p,ctrl-q")
--device strings将主机设备添加到容器中
--device-cgroup-rule strings将规则添加到cgroup allowed devices列表
--device-read-bps strings限制设备的读取速率(字节/秒)(例如–device read bps=/dev/sda:1mb)
--device-read-iops strings限制设备的读取速率(IO/秒)(例如——设备读取iops=/dev/sda:1000)
--device-write-bps strings限制对设备的写入速率(字节/秒)(例如–device write bps=/dev/sda:1mb)
--device-write-iops strings限制对设备的写入速率(IO/秒)(例如–device write iops=/dev/sda:1000)
--disable-content-trust这是一个特定于Docker的选项,是一个NOOP
--dns strings设置自定义DNS服务器
--dns-opt strings设置自定义DNS选项
--dns-search strings设置自定义DNS搜索域
--entrypoint string覆盖图像的默认入口点
-e, --env stringArray在容器中设置环境变量(默认[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin,TERM=xterm])
--env-file strings读入环境变量文件
--env-host使用容器中的所有当前主机环境变量
--expose strings公开一个端口或一系列端口
--gidmap strings用于用户命名空间的GID映射
--group-add strings将其他组添加到主容器进程。”“保留组”允许容器进程使用补充组。
--health-cmd string为容器设置healthcheck命令(“无”禁用现有healthcheck)
--health-interval string设置健康检查的时间间隔(禁用值导致无自动计时器设置)(默认值为“30s”)
--health-retries uint健康检查被视为不健康之前允许的重试次数(默认值3)
--health-start-period string容器引导所需的初始化时间(默认值为“0”)
--health-timeout string在间隔被视为失败之前完成健康检查所允许的最长时间(默认值为“30秒”)
-h, --hostname string设置容器主机名
--http-proxy基于主机代理变量在容器中设置代理环境变量(默认为true)
--image-volume string告诉podman如何处理内置映像卷(“绑定”
--init在容器内运行一个init二进制文件,它转发信号并接收进程
--init-path string容器初始化二进制文件的路径
-i, --interactive即使未连接,也保持标准DIN打开
--ip string指定容器的静态IPv4地址
--ipc string要使用的IPC命名空间
--kernel-memory <number>[<unit>]内核内存限制(格式:<number>[<unit>],其中unit=b(字节)、k(千字节)、m(兆字节)或g(千兆字节))
-l, --label stringArray在容器上设置元数据
--label-file strings读入以行分隔的标签文件
--log-driver string容器的日志驱动程序(默认为“k8s文件”)
--log-opt strings日志驱动程序选项
--mac-address string容器MAC地址(例如92:d0:c6:0a:29:33)
-m, --memory <number>[<unit>]内存限制(格式:<number>[<unit>],其中单位=b(字节)、k(千字节)、m(兆字节)或g(千兆字节))
--memory-reservation []内存软限制(格式:<number>[<unit>],其中单位=b(字节)、k(千字节)、m(兆字节)或g(千兆字节))
--memory-swap string交换限制等于内存加交换:’-1’以启用无限制交换
--memory-swappiness int调整容器内存交换(0到100,或系统默认值为-1)(默认值为-1)
--mount stringArray将文件系统装载附加到容器
--name string为容器指定一个名称
--network string将容器连接到网络(默认为“网桥”)
--network-alias strings为容器添加网络范围的别名
--no-healthcheck禁用容器上的健康检查
--no-hosts不要在容器中创建/etc/hosts,而是使用映像中的版本
--oom-kill-disable禁用OOM杀手
--oom-score-adj int调整主机的OOM首选项(-1000到1000)
--os OS使用操作系统而不是运行操作系统来选择图像
--pid string要使用的PID命名空间
--pidfile string将容器进程ID写入文件
--pids-limit int调整容器pids限制(设置0表示无限制,设置1表示服务器默认值)(默认值2048)
--platform string指定用于选择图像的平台。(与--arch和--os冲突)
--pod string在现有吊舱中运行容器
--pod-id-file string从文件中读取pod ID
--preserve-fds uint将多个附加文件描述符传递到容器中
--privileged为容器授予扩展权限
-p, --publish strings将容器的端口或一系列端口发布到主机(默认值[])
-P, --publish-all将所有公开端口发布到主机接口上的随机端口
--pull string创建前拉取图像(“始终”|“缺少”|“从不”)(默认为“缺少”)
-q, --quiet拉取图像时抑制输出信息
--read-only使容器根文件系统只读
--read-only-tmpfs在只读模式下运行容器时,在/run、/tmp和/var/tmp上装载读写tmpfs(默认为true)
--replace如果存在同名容器,请将其替换
--requires strings添加一个或多个必须在启动此容器之前启动的需求容器
--restart string当容器退出时应用的重新启动策略(“总是”|“否”|“失败时”|“除非停止”)
--rm退出后移除容器(和吊舱,如果已创建)
--rmi删除容器图像,除非其他容器使用
--rootfs第一个参数不是图像,而是分解容器的rootfs
--sdnotify string控件sd通知行为(“容器”|“conmon”|“忽略”)(默认为“容器”)
--seccomp-policy string选择seccomp配置文件的策略(实验)(默认为“默认”)
--secret stringArray将机密添加到容器
--security-opt stringArray安全选项
--shm-size <number>[<unit>]/dev/shm的大小(格式:<number>[<unit>],其中单位=b(字节)、k(千字节)、m(兆字节),或g(千兆字节))(默认值为“65536k”)
--sig-proxy代理接收到进程的信号(默认为true)
--stop-signal string发出停止集装箱的信号。默认为SIGTERM
--stop-timeout uint用户命令停止的容器必须退出的超时(秒)。如果超过,容器将通过SIGKILL强制停止。(默认值为10)
--subgidname string/etc/subgid中列出的用于用户命名空间的范围的名称
--subuidname string在用户命名空间中使用的/etc/subuid中列出的范围的名称
--sysctl stringsSysctl选项
--systemd string在systemd模式下运行容器(“true”|“false”|“always”)(默认值为“true”)
--timeout uint允许容器运行的最长时间。该容器将在时间到期后自动终止。
--tmpfs tmpfs将临时文件系统(tmpfs)装入容器中
-t, --tty为容器分配一个伪TTY
--tz string在容器中设置时区
--uidmap strings要用于用户命名空间的UID映射
--ulimit stringsUlimit选项(默认值[nproc=4194304:4194304])
--umask string在容器中设置umask(默认值为“0022”)
-u, --user string用户名或UID(格式:<name | UID>[:<group | gid>])
--userns string要使用的用户命名空间
--uts string要使用的名称空间
--variant string使用_VARIANT_u而不是运行架构变量来选择图像
-v, --volume stringArray绑定并将卷装载到容器中
--volumes-from stringArray从指定容器装入卷
-w, --workdir string容器内的工作目录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值