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
相关推荐
石明亮(JT)27 分钟前
docker部署jenkins
java·docker·jenkins
Мартин.42 分钟前
[Meachines] [Easy] GoodGames SQLI+Flask SSTI+Docker逃逸权限提升
python·docker·flask
huosenbulusi11 小时前
helm推送到harbor私有库--http: server gave HTTP response to HTTPS client
云原生·容器·k8s
不会飞的小龙人11 小时前
Docker Compose创建镜像服务
linux·运维·docker·容器·镜像
不会飞的小龙人11 小时前
Docker基础安装与使用
linux·运维·docker·容器
张3蜂12 小时前
docker Ubuntu实战
数据库·ubuntu·docker
元气满满的热码式17 小时前
K8S中Service详解(三)
云原生·容器·kubernetes
染诗17 小时前
docker部署flask项目后,请求时总是报拒绝连接错误
docker·容器·flask
张3蜂18 小时前
docker 部署.netcore应用优势在什么地方?
docker·容器·.netcore
心惠天意20 小时前
docker-compose篇---创建jupyter并可用sudo的创建方式
docker·jupyter·容器