docker常用命令

docker说明

docker主要有仓库,镜像,容器

仓库是存放镜像的地方

镜像是一个个模板,用来快速创建容器

容器是从镜像克隆出来的运行的程序

docker常用命令

帮助命令

docker version 		# 显示docker版本信息
docker info 		# 显示docker系统系统信息,镜像以及容器数量等信息
docker 命令 --help	# 帮助命令

systemctl enable docke    #设置开机启动 docker

基本命令

启动docker命令

systemctl start docker

关闭docker命令

systemctl stop docker

重启docker命令

systemctl restart docker

查看docker运行状态

systemctl status docker

Docker 镜像命令

查看本地镜像 docker images

# docker images 查看本地的所有镜像
[root@izuf6akcgealirj602cmxsz /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   3 months ago   13.3kB

# 命令参数含义
REPOSITORY	# 镜像仓库源
TAG			# 镜像的标签,版本
IMAGE ID	# 镜像的ID,唯一表示
CREATED		# 镜像的创建时间
SIZE		# 镜像的大小

# 可选项
  -a, --all  	# 列出所有镜像
  -q, --quiet   # 只显示镜像ID
  
  
  
 docker inspect nginx #查看nginx镜像详细信息

查看镜像详细信息docker inspect nginx

sh 复制代码
[root@VM-12-4-centos docker]#  docker inspect nginx
[
    {
        "Id": "sha256:5ef79149e0ec84a7a9f9284c3f91aa3c20608f8391f5445eabe92ef07dbda03c",
        "RepoTags": [
            "nginx:latest"
        ],
        "RepoDigests": [
            "nginx@sha256:447a8665cc1dab95b1ca778e162215839ccbb9189104c79d7ec3a81e14577add"
        ],
        "Parent": "",
        "Comment": "buildkit.dockerfile.v0",
        "Created": "2024-08-14T21:31:12Z",
        "DockerVersion": "",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.27.1",
                "NJS_VERSION=0.8.5",
                "NJS_RELEASE=1~bookworm",
                "PKG_RELEASE=1~bookworm",
                "DYNPKG_RELEASE=2~bookworm"
            ],
            "Cmd": [
                "nginx",
                "-g",
                "daemon off;"
            ],
            "ArgsEscaped": true,
            "Image": "",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGQUIT"
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 187694648,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/f8823aa8a0a0d01be631e89e483725db5936035efd2194081d00d104bf21035f/diff:/var/lib/docker/overlay2/738fd9859fcb44f55690d0a5ec1044b424689a02583925dde021a50bdad73a6e/diff:/var/lib/docker/overlay2/5bd58e1cf855619ac364a8ddf719649c672a1473a8ca066f5a08867791e0c885/diff:/var/lib/docker/overlay2/f029e92cb99d92a2f8a1861ecd488e05c364cccd9f17d45c6268308600d8ae22/diff:/var/lib/docker/overlay2/9d74e67d13d0a47c143f796ccf90c3874ef4d4a024ea72f547ed19e46849ed78/diff:/var/lib/docker/overlay2/f5db936e3a67feca01233b33c9aa61c3ef630049326f289b7bf1b61ddc8cb40b/diff",
                "MergedDir": "/var/lib/docker/overlay2/0b47cc7a25176e0212c4073a3e53fda44808a3174b14b14d5adba639d992874e/merged",
                "UpperDir": "/var/lib/docker/overlay2/0b47cc7a25176e0212c4073a3e53fda44808a3174b14b14d5adba639d992874e/diff",
                "WorkDir": "/var/lib/docker/overlay2/0b47cc7a25176e0212c4073a3e53fda44808a3174b14b14d5adba639d992874e/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:9853575bc4f955c5892dd64187538a6cd02dba6968eba9201854876a7a257034",
                "sha256:72db5db515fdd9ae82b759fc207fdfbcc31567c28bb87950abc94ce1d60b2d40",
                "sha256:8b87c0c6652495401acfbe029ede84a5f327664770561ba5f8b7fe9149f52dd0",
                "sha256:ec1a2ca4ac8784def146544fc7068db06a188d2da4fd7c4e134a76415b8bc1a8",
                "sha256:55e54df86207fa772302a6fc1e78eb60bd7e3ebd4f913ef7f5ad668ad69ab64d",
                "sha256:f4f00eaedec7933a48b09f3948c685c41d55f0bf5906295dd022c05b65082344",
                "sha256:5f0272c6e96d5cd8ea1c6507cfce81980d4b99322bd037d99250a79d4c0b9f1a"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]
sh 复制代码
"ExposedPorts": {
                "80/tcp": {} #端口
            },
            
            
           "Entrypoint": [
                "/docker-entrypoint.sh" #启动命令
            ], 
            
sh 复制代码
# docker search 查找镜像
[root@izuf6akcgealirj602cmxsz /]# docker search mysql
NAME     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql    MySQL is a widely used, open-source relation...   11931     [OK]       
mariadb  MariaDB Server is a high performing open sou...   4561      [OK]   

# 命令参数含义
NAME           # 镜像仓库
DESCRIPTION    # 镜像描述信息
STARS          # 镜像收藏数
OFFICIAL       # 是否为docker官方发布的镜像
AUTOMATED      # 是否为自动化构建的镜像,关于自动化构建,可以查看官方文档:https://docs.docker.com/docker-hub/builds/#how-automated-builds-work

# 可选项
  --filter=STARS=5000	# 查找收藏数量大于5000的镜像
[root@izuf6akcgealirj602cmxsz /]# docker search mysql --filter=STARS=5000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation...   11931     [OK]   

docker pull 拉取镜像

sh 复制代码
# 直接拉去镜像,默认拉去最新版本(目前为8.0)  docker pull 镜像名
[root@izuf6akcgealirj602cmxsz /]# docker pull mysql
Using default tag: latest			# 最新版本镜像
latest: Pulling from library/mysql
72a69066d2fe: Pull complete 		# 分层下载,docker镜像核心(联合文件系统)
93619dbc5b36: Pull complete 
99da31dd6142: Pull complete 
626033c43d70: Pull complete 
37d5d7efb64e: Pull complete 
ac563158d721: Pull complete 
d2ba16033dad: Pull complete 
688ba7d5c01a: Pull complete 
00e060b6d11d: Pull complete 
1c04857f594f: Pull complete 
4d7cfa90e6ea: Pull complete 
e0431212d27d: Pull complete 
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest		# 镜像真实地址

# 等价关系
docker pull mysql 等价于 docker pull docker.io/library/mysql:latest

# 拉去指定版本的镜像	docker pull 镜像名[:tag]
[root@izuf6akcgealirj602cmxsz /]# docker pull mysql:5.7  
5.7: Pulling from library/mysql
72a69066d2fe: Already exists 		# 本地已经存在的文件层就不用在此下载了
93619dbc5b36: Already exists 
99da31dd6142: Already exists 
626033c43d70: Already exists 
37d5d7efb64e: Already exists 
ac563158d721: Already exists 
d2ba16033dad: Already exists 
0ceb82207cd7: Pull complete 
37f2405cae96: Pull complete 
e2482e017e53: Pull complete 
70deed891d42: Pull complete 
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

docker rmi删除镜像

-f 强制删除

sh 复制代码
# 删除指定容器 docker rmi 镜像ID  
[root@izuf6akcgealirj602cmxsz /]# docker rmi c20987f18b13  
Untagged: mysql:5.7
Untagged: mysql@sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Deleted: sha256:c20987f18b130f9d144c9828df630417e2a9523148930dc3963e9d0dab302a76 # 只删除了当前版本(mysql5.7)所下载的文件层
Deleted: sha256:6567396b065ee734fb2dbb80c8923324a778426dfd01969f091f1ab2d52c7989
Deleted: sha256:0910f12649d514b471f1583a16f672ab67e3d29d9833a15dc2df50dd5536e40f
Deleted: sha256:6682af2fb40555c448b84711c7302d0f86fc716bbe9c7dc7dbd739ef9d757150
Deleted: sha256:5c062c3ac20f576d24454e74781511a5f96739f289edaadf2de934d06e910b92

# [root@izuf6akcgealirj602cmxsz /]# docker rmi 镜像ID   				#删除指定镜像
# [root@izuf6akcgealirj602cmxsz /]# docker rmi 镜像ID 镜像ID ...   	   #删除多个镜像
# [root@izuf6akcgealirj602cmxsz /]# docker rmi $(docker images -aq)  #删除所有镜像

容器命令

说明有了镜像才可以运行容器

创建容器并运行

sh 复制代码
# docker run [:可选参数] image

# 命令参数含义
--name="容器名称"	# 自定义容器名称,用于区别容器
-d				  	# 后台运行
-it 				# 使用交互模式运行,进入容器
-p 					# 指定容器端口
	-p ip:宿主机端口:容器端口
	-p 宿主机端口:容器端口
	-p 容器端口
-P 					# 随机指定端口
-v  # 文件挂载     -v 宿主机目录:容器目录 -v /host/config:/container/config

# 启动并进入容器
[root@izuf6akcgealirj602cmxsz ~]# docker run  -it centos /bin/bash
[root@izuf6akcgealirj602cmxsz ~]# docker exec  -it 容器id /bin/bash

# 查看容器内centos,基础版本,很多命令都是不完善的
[root@e901f5c1bb19 /]# ls 
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr

列出容器

sh 复制代码
# docker ps 查看正在运行的容器 

# 命令参数含义
-a 		# 列出所有容器,正在运行或者曾经运行过的容器
-q 		# 只显示容器ID
-n=? 	# 显示最近创建的n个容器

# 列出所有容器,正在运行或者曾经运行过的容器
[root@izuf6akcgealirj602cmxsz ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                      PORTS     NAMES
e901f5c1bb19   centos    "/bin/bash"   15 minutes ago   Exited (0) 12 minutes ago             hardcore_lumiere

# 只显示容器ID
[root@izuf6akcgealirj602cmxsz ~]# docker ps -aq
e901f5c1bb19

退出容器

sh 复制代码
# 容器直接停止并退出
[root@d130c281ffda /]# exit
exit

# 容器不停止退出
ctrl + P + Q

删除容器

sh 复制代码
# docker rm 容器ID  # 删除指定容器,不能删除正在运行的容器
# docker rm $(docker ps -aq)  # 删除所有容器
# docker ps -a -q|xargs docker rm # 删除所有容器

# 命令参数含义
-f 		# 强制删除

启动和停止容器

sh 复制代码
# 启动容器
docker start 容器ID
# 重启容器
docker restart 容器ID
# 停止容器
docker stop 容器ID
# 杀掉容器
docker kill 容器ID

进入容器docker exec

sh 复制代码
docker exec -it nginx /bin/bash

查看日志docker logs

查看容器中进程信息 docker top

复制文件

docker cp

sh 复制代码
#复制容器文件到主机
# docker cp 容器id:容器内路径 主机目的路径
docker cp centos7-2:/tmp/1.txt ./
# 复制主机文件到容器
# docker cp [选项] 源路径 容器名:目标路径
docker cp 2.txt centos7-2:/tmp/ #把宿主机的文件复制到容器

端口映射的三种方式

指定端口-p

sh 复制代码
docker run -d --name nginx01 -p 80:80 nginx #把容器的80端口映射到宿主机的80端口
# 选项:-p 宿主机端口:容器端口

随机端口-P

sh 复制代码
docker run -d --name nginx06 -P nginx

临时暴露端口--expose

sh 复制代码
docker run -it -d --expose 88 --name centos7-2 centos:7 /bin/bash
# 选项 --expose 镜像没有暴露端口,在启动容器是临时暴露指定的端口

卷挂载的三种方式

指定目录挂载: -v 宿主机路径:容器路径

sh 复制代码
docker run -d --name nginx03 -v /tmp/www:/usr/share/nginx/html/ -p 80:80 nginx

具名挂载:-v 卷名:容器路径

docker run -d --name nginx03 -v www:/usr/share/nginx/html/ -p 80:80 nginx
# 默认的宿主机挂载目录:/var/lib/docker/volumes/

匿名挂载:-v 容器路径

docker run -d --name nginx04 -v /usr/share/nginx/html/ -p 80:80 nginx

dockers网络管理

网络类型

host 模式:使用--net=host 指定,能与宿主机在同一个网络中通信,但是没有独立IP地址。

none 模式:Docker 容器拥有自己的Network Namespace ,但是,并不为Docker 容器进行任何网络配置

bridge 模式是docker 的默认网络模式,不用--net 参数,就是bridge模式。相当于VMware 中的NAT模式

网络创建
sh 复制代码
docker network create --subnet=192.168.1.0/24 mynet #创建网络,默认是bridge模式
docker network ls #查看网络
docker network rm mynet
docker network --help #查看和网络相关的操作

镜像仓库

登录

docker login hub.docker.com
# docker login #不知道仓库地址,默认官方仓库

上传镜像

sh 复制代码
# 上传镜像
# 需要打标记,修改本地镜像的名字为账号名/镜像名
#  例:docker tag centos:7 lu1234/centos:v1
docker login
docker push lu1234/centos:v1

下载镜像

下载镜像
docker pull
例:docker push lu1234/centos:v1

创建私有仓库

作用:

1.节约带宽:因为如果用docker或阿里云官方的仓库走的互联网浪费带宽,而且慢。

2.提供资源利用和安全:因为公司内部的镜像,推送到本地仓库,更方便公司内部人员用,而且安全性高。

sh 复制代码
# 1)拉取镜像
docker pull registr y
# 2)运行容器
docker run -d \
-v /home/docker/registr y:/var/lib/registr y \
-p 5000:5000 \
--restart=always \
--name registr y \
registr y

# 验证仓库可用性
curl http://192.168.100.140:5000/v2/_catalog

# 上传镜像到私有库
docker tag nginx 192.168.100.140:5000/nginx #镜像重新打标记
docker push 192.168.100.140:5000/nginx
# 推送需要https协议,需要修改配置文件
vim /etc/docker/daemon.json
{
"registr y-mirrors": ["http://hub-mirror.c.163.com"],
"insecure-registries": ["192.168.100.140:5000"]
}
# 重启服务再次推送

# 拉取镜像
docker pull 192.168.100.140:5000/nginx
相关推荐
Super丶病毒2 小时前
Docker 中使用 PHP 通过 Canal 同步 Mysql 数据到 ElasticSearch
mysql·elasticsearch·docker·canal·php
stormsha2 小时前
Docker 更换 MySQL 镜像:备份、迁移与恢复数据的详细流程
linux·mysql·docker·容器
apgk14 小时前
docker redis 详细教程
redis·docker·容器
IT利刃出鞘5 小时前
Docker Compose--安装本地maven
java·docker·容器
大龙Java5 小时前
docker build次数过多,导致磁盘内存不足:ERROR: no space left on device
docker·容器
明 庭5 小时前
在 Ubuntu 下通过 Docker 部署 WebDAV 服务器
服务器·ubuntu·docker
勇-子6 小时前
k8s pod之间的通讯方式
云原生·容器·kubernetes
勇-子6 小时前
k8s 部署方式kustomization和helm的区别
云原生·容器·kubernetes
fragrans7 小时前
介绍一款docker ui 管理工具
运维·docker·容器·docker ui