docker-02-常用命令




帮助命令

docker version         # 显示docker版本信息
docker info            # 显示docker系统详细信息,包括镜像和容器的数量
docker command --help  # 万能命令


帮助文档的地址:https://docs.docker.com/engine/reference/commandline/docker/



镜像命令

1 docker images 查看所有镜像

[root@alnk ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   5 months ago   13.3kB

# 说明
REPOSITORY: 镜像的仓库源名称
TAG:        镜像的标签
IMAGE ID:   镜像的ID
CREATED:    镜像的创建时间
SIZE:       镜像的大小

# 可选参数
-a/--all    列出所有镜像
-q/--quiet  只显示镜像的ID


2 docker search 搜索镜像

[root@alnk ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11296     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   4291      [OK]       
...

# 可选参数
[root@alnk ~]# docker search --help
Usage:  docker search [OPTIONS] TERM
Search the Docker Hub for images
Options:
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print search using a Go template
      --limit int       Max number of search results (default 25)
      --no-trunc        Don't truncate output

# 搜索STARS数超过3000的镜像
[root@alnk ~]# docker search mysql --filter=STARS=3000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   11296     [OK]       
mariadb   MariaDB Server is a high performing open sou…   4291      [OK]     


3 docker pull 下载镜像

[root@alnk ~]# docker pull mysql
Using default tag: latest                # 如果不写tag,默认就是latest
latest: Pulling from library/mysql
e1acddbe380c: Pull complete              # 分层下载,docker image的核心(联合文件系统)
bed879327370: Pull complete 
03285f80bafd: Pull complete 
ccc17412a00a: Pull complete 
1f556ecc09d1: Pull complete 
......
Digest: sha256:d45561a65aba6edac77be36e0a53f0c1fba67b951cb728348522b671ad63f926  # 签名
Status: Downloaded newer image for mysql:latest
# 下载镜像的真实地址 docker pull mysql 等价于 docker pull docker.io/library/mysql:latest
docker.io/library/mysql:latest  


# 指定下载版本
# 需要确定所指定的版本在docker hub上是否存在
[root@alnk ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
e1acddbe380c: Already exists   # 分层,上面下载mysql的时候,已经下载过该层了,所以这里不需要下载了
bed879327370: Already exists 
03285f80bafd: Already exists 
ccc17412a00a: Already exists 
1f556ecc09d1: Already exists 
adc5528e468d: Already exists 
1afc286d5d53: Already exists 
4d2d9261e3ad: Pull complete 
ac609d7b31f8: Pull complete 
53ee1339bc3a: Pull complete 
b0c0a831a707: Pull complete 
Digest: sha256:7cf2e7d7ff876f93c8601406a5aa17484e6623875e64e7acc71432ad8e0a3d7e
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

[root@alnk ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
mysql         5.7       6c20ffa54f86   2 days ago     448MB
mysql         latest    5a4e492065c7   2 days ago     514MB
hello-world   latest    d1165f221234   5 months ago   13.3kB



4 docker rmi 删除镜像

# 1 删除指定的镜像ID
# [docker image rm -f 镜像ID] 等价于 [docker rmi -f 镜像ID]
[root@alnk ~]# docker image rm -f 6c20ffa54f86
[root@alnk ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
mysql         latest    5a4e492065c7   2 days ago     514MB
hello-world   latest    d1165f221234   5 months ago   13.3kB
[root@alnk ~]# docker rmi -f 5a4e492065c7
[root@alnk ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   5 months ago   13.3kB

# 2 删除多个镜像ID
[root@alnk ~]# docker rmi -f 镜像ID 镜像ID 镜像ID

# 3 删除全部的镜像ID
[root@alnk ~]# docker rmi -f $(docker images -aq)



容器命令

# 我们有了镜像才可以创建容器
# 下载一个centos镜像来学习测试
[root@alnk ~]# docker pull centos



1 docker run 新建容器并启动

# docker run [可选参数] image ID

# 参数说明
--name="Name"  # 容器的名字 tomcat01 tomcat02,用来区分容器
-d             # 后台方式运行
-it            # 使用交互方式运行,进入容器内部
-p             # 指定容器的端口 -p 8080:8080
    -p ip:主机端口:容器端口
    -p 主机端口:容器端口(这个比较常用)
    -p 容器端口
-P(大P)         # 随机指定端口


# 测试启动并进入容器
[root@alnk ~]# docker run -it centos /bin/bash
[root@b18875371eb6 /]# ls     # 查看容器内的centos目录
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var


# 从容器中退回宿主机
[root@b18875371eb6 /]# exit   # 容器也停止启动了
exit



2 docker ps 列出所有运行的容器

# 只列出当前正在运行的容器
[root@alnk ~]# docker ps   
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES


# 只要运行过的容器都会列出
[root@alnk ~]# docker ps -a  
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS                      PORTS     NAMES
b18875371eb6   centos         "/bin/bash"              About a minute ago   Exited (0) 37 seconds ago             awesome_sutherland
e4db40e5b185   hello-world    "/hello"                 3 hours ago          Exited (0) 3 hours ago                sleepy_pascal
44691d4d482a   hello-world    "/hello"                 3 hours ago          Exited (0) 3 hours ago                quizzical_pike
d2ccea721005   c39a868aad02   "/docker-entrypoint.…"   9 months ago         Exited (0) 9 months ago               eager_hawking
0955422d3a0f   c39a868aad02   "/docker-entrypoint.…"   9 months ago         Exited (0) 9 months ago               exciting_wilson
0e6a2a251e67   c39a868aad02   "/docker-entrypoint.…"   9 months ago         Exited (0) 9 months ago               gracious_ritchie
bfe19a44963b   c39a868aad02   "/docker-entrypoint.…"   9 months ago         Exited (0) 9 months ago               mystifying_shockley
e57d00bc206a   c39a868aad02   "/docker-entrypoint.…"   9 months ago         Exited (0) 9 months ago               nervous_rubin



3 退出容器

# 1 exit退出容器,如果该容器没有其他进程则该容器会停止
[root@alnk ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@alnk ~]# docker run -it centos /bin/bash
[root@38ba222b47b1 /]# exit
exit
[root@alnk ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES


# 2 ctrl+p+q 容器不停止退出
[root@alnk ~]# docker run -it centos /bin/bash
[root@a3527e17bf8d /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@a3527e17bf8d /]# [root@alnk ~]# ls
deploy_targz.py  id_rsa  ip.txt  test
[root@alnk ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS              PORTS     NAMES
a3527e17bf8d   centos    "/bin/bash"   About a minute ago   Up About a minute             angry_hofstadter
   


4 docker rm 删除容器

# 删除指定的容器
# -f 强制删除,如果不加该参数,那么正在运行的容器不能删除
[root@alnk ~]# docker container ps 
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
a3527e17bf8d   centos    "/bin/bash"   3 minutes ago   Up 3 minutes             angry_hofstadter
[root@alnk ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
a3527e17bf8d   centos    "/bin/bash"   3 minutes ago   Up 3 minutes             angry_hofstadter

[root@alnk ~]# docker ps -a 
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                     PORTS     NAMES
a3527e17bf8d   centos         "/bin/bash"              4 minutes ago   Up 4 minutes                         angry_hofstadter
38ba222b47b1   centos         "/bin/bash"              4 minutes ago   Exited (0) 4 minutes ago             charming_turing
b18875371eb6   centos         "/bin/bash"              9 minutes ago   Exited (0) 8 minutes ago             awesome_sutherland
...

[root@alnk ~]# docker rm a3527e17bf8d
Error response from daemon: You cannot remove a running container a3527e17bf8d6023c5780b46993415a5e0ca7a0eefb3631fe6f7ca5db2dcf284. Stop the container before attempting removal or force remove
[root@alnk ~]# docker rm -f a3527e17bf8d
a3527e17bf8d
[root@alnk ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES


# 删除所有的容器
[root@alnk ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
38ba222b47b1   centos         "/bin/bash"              6 minutes ago    Exited (0) 6 minutes ago              charming_turing
b18875371eb6   centos         "/bin/bash"              11 minutes ago   Exited (0) 10 minutes ago             awesome_sutherland
e4db40e5b185   hello-world    "/hello"                 3 hours ago      Exited (0) 3 hours ago                sleepy_pascal
44691d4d482a   hello-world    "/hello"                 3 hours ago      Exited (0) 3 hours ago                quizzical_pike
d2ccea721005   c39a868aad02   "/docker-entrypoint.…"   9 months ago     Exited (0) 9 months ago               eager_hawking
0955422d3a0f   c39a868aad02   "/docker-entrypoint.…"   9 months ago     Exited (0) 9 months ago               exciting_wilson
0e6a2a251e67   c39a868aad02   "/docker-entrypoint.…"   9 months ago     Exited (0) 9 months ago               gracious_ritchie
bfe19a44963b   c39a868aad02   "/docker-entrypoint.…"   9 months ago     Exited (0) 9 months ago               mystifying_shockley
e57d00bc206a   c39a868aad02   "/docker-entrypoint.…"   9 months ago     Exited (0) 9 months ago               nervous_rubin
[root@alnk ~]# docker ps -aq  # 查看所有运行过的容器ID
38ba222b47b1
b18875371eb6
e4db40e5b185
...
[root@alnk ~]# docker rm -f $(docker ps -aq)
[root@alnk ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES



5 docker start/stop/kill 启动和停止容器

[root@alnk ~]# docker images 
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
centos        latest    300e315adb2f   8 months ago   209MB
[root@alnk ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@alnk ~]# docker run -it centos /bin/bash
[root@5710624009cd /]# [root@alnk ~]# 
[root@alnk ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
5710624009cd   centos    "/bin/bash"   18 seconds ago   Up 17 seconds             sweet_ellis


# 1 停止当前正在运行的容器  [docker stop 容器ID/容器名称]
[root@alnk ~]# docker stop 5710624009cd
5710624009cd
[root@alnk ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                     PORTS     NAMES
5710624009cd   centos    "/bin/bash"   45 seconds ago   Exited (0) 2 seconds ago             sweet_ellis
# STATUS 的状态是Exited,退出


# 2 启动容器 [docker start 容器ID/容器名称] 
[root@alnk ~]# docker start 5710624009cd
5710624009cd
[root@alnk ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS         PORTS     NAMES
5710624009cd   centos    "/bin/bash"   57 seconds ago   Up 2 seconds             sweet_ellis


# 3 重启容器 [docker restart 容器ID/容器名称]
[root@alnk ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS          PORTS     NAMES
5710624009cd   centos    "/bin/bash"   About a minute ago   Up 11 seconds             sweet_ellis
[root@alnk ~]# 
[root@alnk ~]# docker restart 5710624009cd
5710624009cd
[root@alnk ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS        PORTS     NAMES
5710624009cd   centos    "/bin/bash"   About a minute ago   Up 1 second             sweet_ellis
# 注意看STATUS运行时间


# 4 强制停止当前运行的容器 [docker kill 容器ID/容器名称]
[root@alnk ~]# docker kill 5710624009cd
5710624009cd
[root@alnk ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                      PORTS     NAMES
5710624009cd   centos    "/bin/bash"   3 minutes ago   Exited (137) 1 second ago             sweet_ellis



其他命令

1 后台启动容器

# docker run -d 镜像ID

[root@alnk ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@alnk ~]# docker run -d centos
f8d9607775c39529296d39fa89e773c63d620929b9a0cd73452861e989d5b171
[root@alnk ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
# 发现centos的容器已经停止了
# docker容器使用后台运行,就必须要有一个前台进程,不然docker发现没有应用,就会自动停止
# centos容器启动以后,发现自己没有提供服务,就会立刻停止掉

# 编写一段shell脚本模拟一个前台进程
[root@alnk ~]# docker run -d centos /bin/sh -c "while true; do echo Alnk; sleep 5; done"
53a4982258bb79f8ad1d904f5b2a31688b161ba10d9827eb9e974bfa81079528
[root@alnk ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
53a4982258bb   centos    "/bin/sh -c 'while t…"   4 seconds ago   Up 3 seconds             amazing_dhawan



2 查看容器日志

# docker logs -f -t --tail 容器ID
# 如果容器中没有日志,那么就不会打印

[root@alnk ~]# docker run -d centos /bin/sh -c "while true; do echo Alnk; sleep 5; done"
[root@alnk ~]# #docker logs -tf --tail -f 53a4982258bb 
[root@alnk ~]# docker logs -tf --tail 10 53a4982258bb
2021-08-20T07:24:03.112433339Z Alnk
2021-08-20T07:24:05.114563113Z Alnk
2021-08-20T07:24:07.116716880Z Alnk
......
^C
[root@alnk ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
53a4982258bb   centos    "/bin/sh -c 'while t…"   2 minutes ago   Up 2 minutes             amazing_dhawan



3 查看容器中进程信息

# docker top 容器ID

[root@alnk ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
53a4982258bb   centos    "/bin/sh -c 'while t…"   4 minutes ago   Up 4 minutes             amazing_dhawan
[root@alnk ~]# docker top 53a4982258bb
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                22024               22005               0                   15:21               ?                   00:00:00            /bin/sh -c while true; do echo Alnk; sleep 2; done
root                28670               22024               0                   15:26               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 5



4 查看镜像或容器的元数据

# docker inspect 容器ID/镜像ID

# 镜像
[root@alnk ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
centos        latest    300e315adb2f   8 months ago   209MB
[root@alnk ~]# docker inspect 300e315adb2f
[
    {
        "Id": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",
        "RepoTags": [
            "centos:latest"
        ],
        "RepoDigests": [
            "centos@sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2020-12-08T00:22:53.076477777Z",
        "Container": "395e0bfa7301f73bc994efe15099ea56b8836c608dd32614ac5ae279976d33e4",
        "ContainerConfig": {
            "Hostname": "395e0bfa7301",
            "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",
                "#(nop) ",
                "CMD [\"/bin/bash\"]"
            ],
            "Image": "sha256:6de05bdfbf9a9d403458d10de9e088b6d93d971dd5d48d18b4b6758f4554f451",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20201204",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS"
            }
        },
        "DockerVersion": "19.03.12",
        "Author": "",
        "Config": {
            "Hostname": "",
            "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/bash"
            ],
            "Image": "sha256:6de05bdfbf9a9d403458d10de9e088b6d93d971dd5d48d18b4b6758f4554f451",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20201204",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS"
            }
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 209348104,
        "VirtualSize": 209348104,
        "GraphDriver": {
            "Data": {
                "MergedDir": "/var/lib/docker/overlay2/2ef70044928b90a13408d6e1105659a4b86c8e460791a41f885db90d194c7864/merged",
                "UpperDir": "/var/lib/docker/overlay2/2ef70044928b90a13408d6e1105659a4b86c8e460791a41f885db90d194c7864/diff",
                "WorkDir": "/var/lib/docker/overlay2/2ef70044928b90a13408d6e1105659a4b86c8e460791a41f885db90d194c7864/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:2653d992f4ef2bfd27f94db643815aa567240c37732cae1405ad1c1309ee9859"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]


# 容器
[root@alnk ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
53a4982258bb   centos    "/bin/sh -c 'while t…"   7 minutes ago   Up 7 minutes             amazing_dhawan
[root@alnk ~]# docker inspect 53a4982258bb
[
    {
        "Id": "53a4982258bb79f8ad1d904f5b2a31688b161ba10d9827eb9e974bfa81079528",
        "Created": "2021-08-20T07:21:38.570237129Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true; do echo Alnk; sleep 2; done"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 22024,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-08-20T07:21:38.964711108Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",
        "ResolvConfPath": "/var/lib/docker/containers/53a4982258bb79f8ad1d904f5b2a31688b161ba10d9827eb9e974bfa81079528/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/53a4982258bb79f8ad1d904f5b2a31688b161ba10d9827eb9e974bfa81079528/hostname",
        "HostsPath": "/var/lib/docker/containers/53a4982258bb79f8ad1d904f5b2a31688b161ba10d9827eb9e974bfa81079528/hosts",
        "LogPath": "/var/lib/docker/containers/53a4982258bb79f8ad1d904f5b2a31688b161ba10d9827eb9e974bfa81079528/53a4982258bb79f8ad1d904f5b2a31688b161ba10d9827eb9e974bfa81079528-json.log",
        "Name": "/amazing_dhawan",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "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",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "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"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/bdca53eac30745aa5a39b64e3a0d52fb6ca256169d54e4576b14232faeeee5a3-init/diff:/var/lib/docker/overlay2/2ef70044928b90a13408d6e1105659a4b86c8e460791a41f885db90d194c7864/diff",
                "MergedDir": "/var/lib/docker/overlay2/bdca53eac30745aa5a39b64e3a0d52fb6ca256169d54e4576b14232faeeee5a3/merged",
                "UpperDir": "/var/lib/docker/overlay2/bdca53eac30745aa5a39b64e3a0d52fb6ca256169d54e4576b14232faeeee5a3/diff",
                "WorkDir": "/var/lib/docker/overlay2/bdca53eac30745aa5a39b64e3a0d52fb6ca256169d54e4576b14232faeeee5a3/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "53a4982258bb",
            "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 Alnk; sleep 2; done"
            ],
            "Image": "centos",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20201204",
                "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": "65a68b64fbb80d78c790f18683ca20b3b86e770237674ae3a1b4e22d82ed2e39",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/65a68b64fbb8",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "1d0e76565d8889a25c7f815b6301320c6e9991780be9c51186c6a407a799bc06",
            "Gateway": "172.18.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.18.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:12:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "05624c7238eaef992c8c10f05c4f4776cb23880f0c0f8d6594db8a72c467ba12",
                    "EndpointID": "1d0e76565d8889a25c7f815b6301320c6e9991780be9c51186c6a407a799bc06",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:12:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]



5 进入当前正在运行的容器

# 我们通常启动容器都是以后台方式运行的,需要进入容器,修改配置

# 1 docker exec -it 容器ID/容器名称 /bin/bash

[root@alnk ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
322bff6c0db2   nginx     "/docker-entrypoint.…"   7 seconds ago   Up 6 seconds   80/tcp    youthful_franklin
[root@alnk ~]# docker exec -it 322bff6c0db2 /bin/bash
root@322bff6c0db2:/# ls
bin  boot  dev  docker-entrypoint.d  docker-entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@322bff6c0db2:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@322bff6c0db2:/# exit   # 这里这样退出容器不会停止,因为还有nginx的进程存在
exit
[root@alnk ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS     NAMES
322bff6c0db2   nginx     "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp    youthful_franklin
[root@alnk ~]# 


# 2 docker attach  容器ID/容器名称(不建议使用)
[root@alnk ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
322bff6c0db2   nginx     "/docker-entrypoint.…"   3 minutes ago   Up 3 minutes   80/tcp    youthful_franklin
[root@alnk ~]# docker attach 322bff6c0db2
### 正在执行的当前的进程,如果退出则该进程也退出了,容器会停止
^P^H^C2021/08/20 07:38:52 [notice] 1#1: signal 2 (SIGINT) received, exiting
2021/08/20 07:38:52 [notice] 31#31: exiting
2021/08/20 07:38:52 [notice] 31#31: exit
2021/08/20 07:38:52 [notice] 1#1: signal 17 (SIGCHLD) received from 31
2021/08/20 07:38:52 [notice] 1#1: worker process 31 exited with code 0
2021/08/20 07:38:52 [notice] 1#1: exit
[root@alnk ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@alnk ~]# 



6 拷贝容器的文件到宿主机

# docker cp 容器ID:容器内路径 目的主机路径

[root@alnk ~]# docker run -d nginx
0ee284bfe727a6c1112c1958683ce6fea157556d7ee19cab3bcf367b45e9ec7e
[root@alnk ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
0ee284bfe727   nginx     "/docker-entrypoint.…"   3 seconds ago   Up 2 seconds   80/tcp    brave_wright
[root@alnk ~]# docker exec -it 0ee284bfe727  /bin/bash
root@0ee284bfe727:/# cd /home/
root@0ee284bfe727:/home# ls
root@0ee284bfe727:/home# touch alnk.txt
root@0ee284bfe727:/home# pwd
/home
root@0ee284bfe727:/home# exit
exit
[root@alnk ~]# docker cp 0ee284bfe727:/home/alnk.txt .
[root@alnk ~]# ls
alnk.txt  deploy_targz.py  id_rsa  ip.txt  test




docker常用命令小结

image-20210820160333557




练习

1 docker安装nginx

# 1 搜索镜像 search,建议去docker官方搜索,可以看到帮助文档 https://hub.docker.com
# 2 下载镜像 pull
# 3 运行测试 run
[root@alnk ~]# docker pull nginx
[root@alnk ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    dd34e67e3371   2 days ago     133MB

# -d 后台运行
# --name 给容器命名
# -p 宿主机端口:容器端口 映射
[root@alnk ~]# docker run -d --name nginx01 -p 3344:80 nginx
4128c5f37b8bac9ff375bcd52cd39eb952533911dcbc666704121ce212b3901b
[root@alnk ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                   NAMES
4128c5f37b8b   nginx     "/docker-entrypoint.…"   4 seconds ago   Up 3 seconds   0.0.0.0:3344->80/tcp, :::3344->80/tcp   nginx01
[root@alnk ~]# curl localhost:3344
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
</html>


# 进入容器
[root@alnk ~]# docker exec -it nginx01 /bin/bash
root@4128c5f37b8b:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@4128c5f37b8b:/# cd /etc/nginx/
root@4128c5f37b8b:/etc/nginx# ls
conf.d  fastcgi_params  mime.types  modules  nginx.conf  scgi_params  uwsgi_params
root@4128c5f37b8b:/etc/nginx# exit
exit
[root@alnk ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                   NAMES
4128c5f37b8b   nginx     "/docker-entrypoint.…"   59 seconds ago   Up 58 seconds   0.0.0.0:3344->80/tcp, :::3344->80/tcp   nginx01
[root@alnk ~]# 

# 思考,如果需要更改nginx的配置文件,那么每次都需要进入到容器内部,这样十分麻烦
# 如果可以在容器外部的宿主机上提供一个对容器内部的映射路径,那么就可以直接在宿主机修改配置文件

image-20210820164720645



2 docker安装tomcat

# 官方的使用方法
# --rm 一般用来测试,用完就删除
[root@alnk ~]# docker run -it --rm tomcat:9.0

# 下载
[root@alnk ~]# docker pull tomcat
[root@alnk ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
tomcat        latest    266d1269bb29   36 hours ago   668MB

# 启动运行
[root@alnk ~]# docker run -d -p 3355:8080 --name tomcat01 tomcat
0d26448b910f3c5ceebe1c6a3182c0b591847f2c0750b6f47bfc581559f45507
[root@alnk ~]# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED         STATUS         PORTS                                       NAMES
0d26448b910f   tomcat    "catalina.sh run"   3 seconds ago   Up 2 seconds   0.0.0.0:3355->8080/tcp, :::3355->8080/tcp   tomcat01

# 进入容器
[root@alnk ~]# docker exec -it tomcat01 /bin/bash
root@0d26448b910f:/usr/local/tomcat# pwd
/usr/local/tomcat
root@0d26448b910f:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps  webapps.dist  work
root@0d26448b910f:/usr/local/tomcat# ls webapps
root@0d26448b910f:/usr/local/tomcat# ls webapps.dist/
ROOT  docs  examples  host-manager  manager
root@0d26448b910f:/usr/local/tomcat# cp -a webapps.dist/* webapps
root@0d26448b910f:/usr/local/tomcat# 

# 官方的tomcat镜像
# 1 linux命令少了
# 2 webapps下没有文件
# 默认是最小的镜像,保证最小可运行环境,不必要的东西都删除了

image-20210820165457713



3 docker安装es + kibana

# ES 暴露的端口很多
# ES 很消耗内存
# ES 数据一般需要放置到安全目录 挂载
# --net somenetwork 网络配置
# -e 配置参数
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag

# 启动
[root@alnk ~]# docker run -d --name elasticsearch  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.8.18

# 查看容器所占宿主机资源信息
[root@alnk ~]# docker stats
CONTAINER ID   NAME            CPU %     MEM USAGE / LIMIT     MEM %     NET I/O      BLOCK I/O       PIDS
9a29b81431ac   elasticsearch   0.30%     1.204GiB / 1.795GiB   67.07%    1.1kB / 0B   208MB / 451kB   43
# 这里可以看到ES 占用了差不多1.2G的内存

# 测试
[root@alnk ~]# curl localhost:9200
{
  "name" : "EQRxQXZ",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "eXQ9ip8yTJ2TeWVjTYsExw",
  "version" : {
    "number" : "6.8.18",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "aca2329",
    "build_date" : "2021-07-28T16:06:05.232873Z",
    "build_snapshot" : false,
    "lucene_version" : "7.7.3",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}


# 增加内存限制
[root@alnk ~]# docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:6.8.18
[root@alnk ~]# docker stats
CONTAINER ID   NAME              CPU %     MEM USAGE / LIMIT     MEM %     NET I/O     BLOCK I/O       PIDS
0951372fe3fd   elasticsearch02   0.48%     354.9MiB / 1.795GiB   19.31%    656B / 0B   104MB / 451kB   43


posted @ 2021-08-30 16:58  李成果  阅读(274)  评论(0编辑  收藏  举报