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常用命令小结
练习
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的配置文件,那么每次都需要进入到容器内部,这样十分麻烦
# 如果可以在容器外部的宿主机上提供一个对容器内部的映射路径,那么就可以直接在宿主机修改配置文件
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下没有文件
# 默认是最小的镜像,保证最小可运行环境,不必要的东西都删除了
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
转载请注明出处哟~
https://www.cnblogs.com/lichengguo