自学内容网 自学内容网

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

[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"
        }
    }
]

"ExposedPorts": {
                "80/tcp": {} #端口
            },
            
            
           "Entrypoint": [
                "/docker-entrypoint.sh" #启动命令
            ], 
            

docker search 查找镜像

# 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 拉取镜像

# 直接拉去镜像,默认拉去最新版本(目前为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 强制删除

# 删除指定容器 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)  #删除所有镜像

容器命令

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

创建容器并运行

# 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

列出容器

# 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

退出容器

# 容器直接停止并退出
[root@d130c281ffda /]# exit
exit

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

删除容器

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

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

启动和停止容器

# 启动容器
docker start 容器ID
# 重启容器
docker restart 容器ID
# 停止容器
docker stop 容器ID
# 杀掉容器
docker kill 容器ID

进入容器docker exec

docker exec -it nginx /bin/bash

查看日志docker logs

查看容器中进程信息 docker top

复制文件

docker cp

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

端口映射的三种方式

指定端口-p

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

随机端口-P

docker run -d --name nginx06 -P nginx

临时暴露端口–expose

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

卷挂载的三种方式

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

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模式

网络创建
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 #不知道仓库地址,默认官方仓库

上传镜像

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

下载镜像

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

创建私有仓库

作用:
1.节约带宽:因为如果用docker或阿里云官方的仓库走的互联网浪费带宽,而且慢。
2.提供资源利用和安全:因为公司内部的镜像,推送到本地仓库,更方便公司内部人员用,而且安全性高。

# 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

原文地址:https://blog.csdn.net/weixin_45023621/article/details/144379322

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!