You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

22 KiB

docker常用命令

docker version 版本信息
docker info    详细信息
docker 命令 -help 帮助命令

docker帮助文档

链接:

docker | Docker Docs

镜像命令

docker images 查看本地镜像
lejings@ljs-Ubuntu-desktop:~$ docker images
REPOSITORY               TAG       IMAGE ID       CREATED         SIZE
portainer/portainer-ce   latest    0c03664af9ed   4 weeks ago     308MB
hello-world              latest    d2c94e258dcb   20 months ago   13.3kB
仓库源 				   仓库的标签	镜像的id	   镜像创建时间	   镜像大小

-a, --all             Show all images 
-q, --quiet           Only show image IDs

docker search 搜索网络镜像
国内墙了、
通过ziti访问

docker网页搜索地址

docker pull 下载镜像
lejings@ljs-Ubuntu-desktop:~$ docker pull mysql
Using default tag: latest
可选:
加上 tag 版本
-----------------------------------------------
lejings@ljs-Ubuntu-desktop:~$ docker pull mysql
Using default tag: latest#不写版本,默认最新版
latest: Pulling from library/mysql
2c0a233485c3: Pull complete #分层下载docker iamge的核心 联合文件系统
cb5a6a8519b2: Pull complete 
570d30cf82c5: Pull complete 
a841bff36f3c: Pull complete 
80ba30c57782: Pull complete 
5e49e1f26961: Pull complete 
ced670fc7f1c: Pull complete 
0b9dc7ad7f03: Pull complete 
cd0d5df9937b: Pull complete 
1f87d67b89c6: Pull complete 
Digest: sha256:0255b469f0135a0236d672d60e3154ae2f4538b146744966d96440318cc822c6#签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest#真实地址

#制定版本下载
lejings@ljs-Ubuntu-desktop:~$ docker pull mysql:5.7
5.7: Pulling from library/mysql
20e4dcae4c69: Pull complete 
1c56c3d4ce74: Pull complete 
e9f03a1c24ce: Pull complete 
68c3898c2015: Pull complete 
6b95a940e7b6: Pull complete 
90986bb8de6e: Pull complete 
ae71319cb779: Pull complete 
ffc89e9dfd88: Pull complete 
43d05e938198: Pull complete 
064b2d298fba: Pull complete 
df9a4d85569b: Pull complete 
Digest: sha256:4bc6bc963e6d8443453676cae56536f4b8156d78bae03c0145cbe47c2aad73bb
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
#分层下载中相同层可以复用
docker rmi 删除镜像

lejings@ljs-Ubuntu-desktop:~$ docker rmi -f mysql:5.7
Untagged: mysql:5.7
Untagged: mysql@sha256:4bc6bc963e6d8443453676cae56536f4b8156d78bae03c0145cbe47c2aad73bb
Deleted: sha256:5107333e08a87b836d48ff7528b1e84b9c86781cc9f1748bbc1b8c42a870d933
Deleted: sha256:37fd5f1492d4e9cb540c52c26655f220568050438f804275e886200c8807ffb4
Deleted: sha256:1105a50d3483cb9f970e70cf5163e3352f0b2fe2ff07c6abcca6f34228e76dc5
Deleted: sha256:94187496c18bb11b78e71017f2774ad3c0a734da9749a46e917c4239504e9322
Deleted: sha256:ae59716eae3be604a4fd43e86fd2ad504cb06c89cc064c73c78eee651e675805
Deleted: sha256:97d26ca29ec287ff4bd09a49602c44cbcabcf3303ddc726b3b94cbe26dfe1c94
Deleted: sha256:27303974d12144264b32b8936ca7c90d72bdba939a9e791010201b3b1717c4c4
Deleted: sha256:4d4483f06dbe01282c10cb9e429a0be826c18c61048f7860dad49ae7f6bac927
Deleted: sha256:3b73a6f6b3298c568dcfb8fa5e96c581a1b5c0ad395b0c38f9addd0c79703124
Deleted: sha256:46446bf265a411a4a13a4adc86f60c9e0479a2e03273c98cafab7bc4151dd2bc
Deleted: sha256:1d5264146b09a27a8fc6801dc239a4962582ed27dd2fbd8ee708463a1857b06b
Deleted: sha256:cff044e186247f93aa52554c96d77143cc92f99b2b55914038d0941fddeb6623
 
# docker rmi -f 多个容器id
# docker rmi -f $(docker images -a) 删除全部

容器命令

有镜像才能有容器

例如:

下载一个centos镜像来测试

lejings@ljs-Ubuntu-desktop:~$ docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete 
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
新建容器并启动
docker run [可选参数] image
#参数说明
--name="Name" 容器名字 同来区分容器
-d 			  后台方式运行
-it    		  使用交互方式运行,进入容器查看内容
-p			  指定容器的端口
	-p ip:主机端口:容器端口
	-p 主机端口:容器端口
	-p 容器端口
	容器端口
-P			  随机指定端口
启动并进入容器测试
lejings@ljs-Ubuntu-desktop:~$ docker run -it centos /bin/bash
[root@297d9cb6d962 /]# ls
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr
#退出命令
[root@297d9cb6d962 /]# exit
exit
lejings@ljs-Ubuntu-desktop:~$ ls
 公共的   视频   文档   音乐   backups01   NginxLearn   snap
 模板     图片   下载   桌面   log         q           'Sunlogin Files'
lejings@ljs-Ubuntu-desktop:~$
列出在运行的容器命令
-a 会带出历史运行过的所有容器
-n=? 显示多少个容器
-q 只显示容器的编号

lejings@ljs-Ubuntu-desktop:~$ docker ps -a
CONTAINER ID   IMAGE                           COMMAND        CREATED         STATUS                      PORTS                                                           NAMES
297d9cb6d962   centos                          "/bin/bash"    2 minutes ago   Exited (0) 57 seconds ago                                                                   sharp_ardinghelli
e5f7036a4b66   portainer/portainer-ce:latest   "/portainer"   19 hours ago    Up 3 hours                  8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   blissful_payne
lejings@ljs-Ubuntu-desktop:~$ docker ps
CONTAINER ID   IMAGE                           COMMAND        CREATED        STATUS       PORTS                                                           NAMES
e5f7036a4b66   portainer/portainer-ce:latest   "/portainer"   19 hours ago   Up 3 hours   8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   blissful_payne

退出容器
exit #停止并退出
ctrl+P+Q #不停止退出
删除容器
docker rm 容器id
docker rm -f $(docker ps -aq)  删除所有容器
docker ps -a -q |xargs docker rm 删除所有容器
启动和停止容器操作
docker start id   启动
docker restart id 重启
docker stop id	  停止
docker kill id	  杀死

常用的其他命令

后台启动容器
# 命令 docker run -d centos
lejings@ljs-Ubuntu-desktop:~$ docker run -d centos
f682fa6dcf219cb0a922b9f143cfe247540d5db38c529b0d14a00daa5f9225da
lejings@ljs-Ubuntu-desktop:~$ docker ps
CONTAINER ID   IMAGE                           COMMAND        CREATED        STATUS       PORTS                                                           NAMES
e5f7036a4b66   portainer/portainer-ce:latest   "/portainer"   20 hours ago   Up 3 hours   8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   blissful_payne

# 问题docker ps发现centos停止了

#坑 docker容器后台运行就必须要有一个前台进程docker没有发现应用就会自动停止eg无服务的nginx

查看日志

docker logs
-f
-t
一般都加上
docker logs -f -t --tail
eg
lejings@ljs-Ubuntu-desktop:~$ docker run -d centos /bin/sh -c "while true;do echo lejings;sleep 1;done"
27077792d72032803ed79a74141b760182e0c5708797404202cb3360a26d1a56
lejings@ljs-Ubuntu-desktop:~$ docker ps
CONTAINER ID   IMAGE                           COMMAND                   CREATED         STATUS         PORTS                                                           NAMES
27077792d720   centos                          "/bin/sh -c 'while t…"   3 seconds ago   Up 2 seconds                                                                   nervous_aryabhata
e5f7036a4b66   portainer/portainer-ce:latest   "/portainer"              20 hours ago    Up 4 hours     8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   blissful_payne
lejings@ljs-Ubuntu-desktop:~$ 
lejings@ljs-Ubuntu-desktop:~$ docker logs -tf --tail 10 27077792d720 
2025-01-19T04:01:51.026673577Z lejings
2025-01-19T04:01:52.029524593Z lejings
2025-01-19T04:01:53.032214090Z lejings
2025-01-19T04:01:54.036061600Z lejings
2025-01-19T04:01:55.041148641Z lejings
2025-01-19T04:01:56.045207647Z lejings
2025-01-19T04:01:57.046315804Z lejings
2025-01-19T04:01:58.049623446Z lejings
 
查看容器中进程信息
# top命令
lejings@ljs-Ubuntu-desktop:~$ docker top 27077792d720
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                64479               64454               0                   11:59               ?                   00:00:00            /bin/sh -c while true;do echo lejings;sleep 1;done

查看镜像的元数据
lejings@ljs-Ubuntu-desktop:~$ docker inspect 27077792d720
[
    {
        "Id": "27077792d72032803ed79a74141b760182e0c5708797404202cb3360a26d1a56",
        "Created": "2025-01-19T03:59:39.128785938Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true;do echo lejings;sleep 1;done"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 64479,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2025-01-19T03:59:39.335663808Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
        "ResolvConfPath": "/var/lib/docker/containers/27077792d72032803ed79a74141b760182e0c5708797404202cb3360a26d1a56/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/27077792d72032803ed79a74141b760182e0c5708797404202cb3360a26d1a56/hostname",
        "HostsPath": "/var/lib/docker/containers/27077792d72032803ed79a74141b760182e0c5708797404202cb3360a26d1a56/hosts",
        "LogPath": "/var/lib/docker/containers/27077792d72032803ed79a74141b760182e0c5708797404202cb3360a26d1a56/27077792d72032803ed79a74141b760182e0c5708797404202cb3360a26d1a56-json.log",
        "Name": "/nervous_aryabhata",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "bridge",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                26,
                112
            ],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "private",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": [],
            "BlkioDeviceWriteBps": [],
            "BlkioDeviceReadIOps": [],
            "BlkioDeviceWriteIOps": [],
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": null,
            "PidsLimit": null,
            "Ulimits": [],
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware",
                "/sys/devices/virtual/powercap"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/79781adb2df7cf08a30bee6c6fd4e0704a77b287c0e4ff740343211c35cce599-init/diff:/var/lib/docker/overlay2/5bd411d3ed71ae95f4d20704f6bb04057dae389c5371211a5fbee9a0940988c5/diff",
                "MergedDir": "/var/lib/docker/overlay2/79781adb2df7cf08a30bee6c6fd4e0704a77b287c0e4ff740343211c35cce599/merged",
                "UpperDir": "/var/lib/docker/overlay2/79781adb2df7cf08a30bee6c6fd4e0704a77b287c0e4ff740343211c35cce599/diff",
                "WorkDir": "/var/lib/docker/overlay2/79781adb2df7cf08a30bee6c6fd4e0704a77b287c0e4ff740343211c35cce599/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "27077792d720",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "while true;do echo lejings;sleep 1;done"
            ],
            "Image": "centos",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20210915",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "deb35f60f666b7f7e5cfcaf686690836a08707fbd5107126b01c48085735c6b3",
            "SandboxKey": "/var/run/docker/netns/deb35f60f666",
            "Ports": {},
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "aa07ba6a7322858d0ba87c80a67bdeb2f12a78f1575ffe7adb0bd6935c49d657",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.3",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:03",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "MacAddress": "02:42:ac:11:00:03",
                    "DriverOpts": null,
                    "NetworkID": "903e049ace8d2e93714e09d69fec26d5a3d116ce540ca80e5f154a8ccb8eead3",
                    "EndpointID": "aa07ba6a7322858d0ba87c80a67bdeb2f12a78f1575ffe7adb0bd6935c49d657",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DNSNames": null
                }
            }
        }
    }
]

进入当前正在运行的容器
 # 进入容器后打开一个新的终端
 docker exec -it 容器id bashShell
 eg
 
lejings@ljs-Ubuntu-desktop:~$ docker exec -it 27077792d720 /bin/bash
[root@27077792d720 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@27077792d720 /]# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 03:59 ?        00:00:01 /bin/sh -c while true;do echo lejings;sleep 1;done
root        3368       0  0 04:55 pts/0    00:00:00 /bin/bash
root        3394       1  0 04:56 ?        00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/s
root        3395    3368  0 04:56 pts/0    00:00:00 ps -ef
[root@27077792d720 /]# 

#
docker attach id
#进入正在执行的终端
lejings@ljs-Ubuntu-desktop:~$ docker attach 27077792d720
lejings
lejings
lejings
lejings
lejings
lejings


由容器拷贝到主机
[root@43c604c94793 home]# ls
[root@43c604c94793 home]# touch test.java
[root@43c604c94793 home]# ls
test.java
[root@43c604c94793 home]# exit
exit
lejings@ljs-Ubuntu-desktop:~/桌面$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
lejings@ljs-Ubuntu-desktop:~/桌面$ docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
43c604c94793   centos    "/bin/bash"   3 minutes ago   Exited (0) 6 seconds ago             vigilant_dirac
lejings@ljs-Ubuntu-desktop:~/桌面$ sudo docker cp 43c604c94793:/home/test.java /home
[sudo] lejings 的密码: 
Successfully copied 1.54kB to /home
lejings@ljs-Ubuntu-desktop:~/桌面$ cd /home
lejings@ljs-Ubuntu-desktop:/home$ ls
lejings  szh  test.java

练习

Docker 安装 Nginx

lejings@ljs-Ubuntu-desktop:/home$ docker images
REPOSITORY               TAG       IMAGE ID       CREATED         SIZE
portainer/portainer-ce   latest    0c03664af9ed   4 weeks ago     308MB
nginx                    latest    9bea9f2796e2   7 weeks ago     192MB
mysql                    latest    56a8c14e1404   3 months ago    603MB
hello-world              latest    d2c94e258dcb   20 months ago   13.3kB
centos                   latest    5d0da3dc9764   3 years ago     231MB
lejings@ljs-Ubuntu-desktop:/home$ docker run -d --name nginx01 -p 3344:80 nginx
c6376749820f8a9e7b2e45bdf392f718629eb6114f201f8e58962d4073d9e9b6
lejings@ljs-Ubuntu-desktop:/home$ docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS         PORTS                                     NAMES
c6376749820f   nginx     "/docker-entrypoint.…"   6 seconds ago   Up 5 seconds   0.0.0.0:3344->80/tcp, [::]:3344->80/tcp   nginx01

每次更改nginx等相关文件都要进入容器于是提出在容器外部提供一个映射路径达到自动修改

Docker 安装 Tomcat

官方使用说明

docker run -it --rm tomcat:9.0
即用在测试场景中,用完即删
#先下载再启动方式

测试访问响应404证明镜像中tomcat不完整
root@ca1ad6b59e59:/usr/local/tomcat# ls
bin           CONTRIBUTING.md  LICENSE         NOTICE         RUNNING.txt    webapps
BUILDING.txt  filtered-KEYS    logs            README.md      temp           webapps.dist
conf          lib              native-jni-lib  RELEASE-NOTES  upstream-KEYS  work
root@ca1ad6b59e59:/usr/local/tomcat# cd webapps
root@ca1ad6b59e59:/usr/local/tomcat/webapps# ls
root@ca1ad6b59e59:/usr/local/tomcat/webapps# 
拷贝初始文件
root@ca1ad6b59e59:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@ca1ad6b59e59:/usr/local/tomcat# cd webapps
root@ca1ad6b59e59:/usr/local/tomcat/webapps# ls
docs  examples  host-manager  manager  ROOT
root@ca1ad6b59e59:/usr/local/tomcat/webapps# 

每次更改tomcat等相关文件都要进入容器于是提出在容器外部提供一个映射路径达到自动修改

部署es+kibana

// to do 暂略

分层思想和提交自定义镜像

commit镜像
docker commit -m提交的描述信息 -a作者 容器id 目标镜像名:[TAG]

将修改后的容器修改为一个新的镜像

由此docker算入门

容器数据卷

容器的持久化和同步操作,容器间数据共享

使用数据卷

方式一:直接使用命令来挂载 -v

docker run -it -v 主机目录:容器内目录(类似-p
lejings@ljs-Ubuntu-desktop:~$ docker run -it -v /home/ceshi:/home/csUbuntu centos /bin/bash
[root@011a2b7954bc /]# 

"Mounts": [
            {
                "Type": "bind",
                "Source": "/home/ceshi",
                "Destination": "/home/csUbuntu",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

[root@011a2b7954bc csUbuntu]# touch test.java
[root@011a2b7954bc csUbuntu]# ls
test.java
[root@011a2b7954bc csUbuntu]#

lejings@ljs-Ubuntu-desktop:/home/ceshi$ ls
test.java
lejings@ljs-Ubuntu-desktop:/home/ceshi$
测试成功
双向同步,容器停止后修改的内容会在容器再次启动时更新