Docker02常用命令
目录
帮助命令: #
#显示版本
[root@izwz91mv6i3x6k12jjqh60z ~]# docker version
Client: Docker Engine - Community
Version: 20.10.6
API version: 1.41
Go version: go1.13.15
Git commit: 370c289
Built: Fri Apr 9 22:45:33 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.6
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: 8728dd2
Built: Fri Apr 9 22:43:57 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.4
GitCommit: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e
runc:
Version: 1.0.0-rc93
GitCommit: 12644e614e25b05da6fd08a38ffa0cfe1903fdec
docker-init:
Version: 0.19.0
GitCommit: de40ad0
#显示Docker的系统信息
[root@izwz91mv6i3x6k12jjqh60z ~]# docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
scan: Docker Scan (Docker Inc.)
Server:
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 1
Server Version: 20.10.6
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: false
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e
runc version: 12644e614e25b05da6fd08a38ffa0cfe1903fdec
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-514.26.2.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.796GiB
Name: izwz91mv6i3x6k12jjqh60z
ID: KA6F:5IVG:6OGX:WPVP:I74K:PAUV:EI5L:SGYK:3GRQ:E3DA:FVTQ:X4BM
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://bjyjzfeq.mirror.aliyuncs.com/
Live Restore Enabled: false
#帮助信息
[root@izwz91mv6i3x6k12jjqh60z ~]# docker --help
Commands:
attach #当前shell下 attach连接指定运行镜像
build #通过dokcerfile 定制镜像
commit #提交当前容器为新的镜像
cp #从容器中拷贝指定文件或目录到宿主机
create #创建一个新的容器 ,同 run ,但不会启动容器
diff #查看docker 容器变化
events #从docker服务器获取容器实时事件
exec #在已存在的容器上运行命令
export #导出容器的内容流作为一个 tar 归档文件(对应 import)
history #展示镜像的形成历史
images #列出系统当前所有镜像
import #从 tar 包中的内容创建一个新的文件系统映像(对应 export)
info #查看系统相关信息
inspect #查看容器详细信息
kill #kill 指定的 docker 容器
load #从一个 tar包中加载一个镜像(对应save)
login #注册或登陆一个docker 源服务器
logout #登出当前源服务器
logs #输出当前容器的日志内容
pause #暂停容器
port #查看映射端口对应的容器内部源端口
ps #列出容器列表
pull #从docker镜像源服务器拉取指定镜像或库镜像
push #推送指定镜像或者库镜像到 docker 源服务器
rename #
restart #重启运行的容器
rm #移除一个或多个容器
rmi #移除一个或多个镜像
run #创建一个新的容器并运行一个命令
save #保存一个镜像为一个 tar (对应load)
search #在docker hub中搜索镜像
start #启动容器
stop #停止容器
tag #给源镜像打标签
top #查看容器中运行的进程消息
unpause #取消暂停容器
version #查看容器版本号
wait #获取容器停止时的退出状态值
镜像命令: #
docker images #
# 主机上的所有本地镜像
[root@izwz91mv6i3x6k12jjqh60z ~]# docker images help
#解释
REPOSITORY:镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像的ID
CREATED:创建时间
SIZE:大小
#可选项
-a --all #列出所有镜像
-q --quiet #只列出镜像的ID
[root@izwz91mv6i3x6k12jjqh60z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 7 weeks ago 13.3kB
docker search #
#搜索镜像
[root@izwz91mv6i3x6k12jjqh60z ~]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10777 [OK]
mariadb MariaDB Server is a high performing open sou… 4058 [OK]
......
#搜索镜像的 star>3000 的镜像
[root@izwz91mv6i3x6k12jjqh60z ~]# docker search mysql --filter=stars=3000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10777 [OK]
mariadb MariaDB Server is a high performing open sou… 4058 [OK]
docker pull #
# 下载镜像 [:tag]
[root@izwz91mv6i3x6k12jjqh60z ~]# docker pull mysql
Using default tag: latest # 不写tag 默认就是 latest
latest: Pulling from library/mysql
f7ec5a41d630: Pull complete #分层下载, docker image的核心,联合文件系统
9444bb562699: Pull complete
6a4207b96940: Pull complete
181cefd361ce: Pull complete
8a2090759d8a: Pull complete
15f235e0d7ee: Pull complete
d870539cd9db: Pull complete
493aaa84617a: Pull complete
bfc0e534fc78: Pull complete
fae20d253f9d: Pull complete
9350664305b3: Pull complete
e47da95a5aab: Pull complete
Digest: sha256:04ee7141256e83797ea4a84a4d31b1f1bc10111c8d1bc1879d52729ccd19e20a #文件签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #存放的镜像的文件真实地址
#等价写法
docker pull docker.io/library/mysql:latest
#指定版本下载
[root@izwz91mv6i3x6k12jjqh60z ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
f7ec5a41d630: Already exists
9444bb562699: Already exists
6a4207b96940: Already exists
181cefd361ce: Already exists
8a2090759d8a: Already exists
15f235e0d7ee: Already exists
d870539cd9db: Already exists
cb7af63cbefa: Pull complete
151f1721bdbf: Pull complete
fcd19c3dd488: Pull complete
415af2aa5ddc: Pull complete
Digest: sha256:a655529fdfcbaf0ef28984d68a3e21778e061c886ff458b677391924f62fb457
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
[root@izwz91mv6i3x6k12jjqh60z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 87eca374c0ed 8 days ago 447MB
mysql latest 0627ec6901db 8 days ago 556MB
hello-world latest d1165f221234 7 weeks ago 13.3kB
docker rmi #
#删除镜像
# docker rmi 镜像ID [镜像ID,...] 删除没有运行容器的镜像
[root@izwz91mv6i3x6k12jjqh60z ~]# docker rmi 0627ec6901db
Untagged: mysql:latest
Untagged: mysql@sha256:04ee7141256e83797ea4a84a4d31b1f1bc10111c8d1bc1879d52729ccd19e20a
Deleted: sha256:0627ec6901db4b2aed6ca7ab35e43e19838ba079fffe8fe1be66b6feaad694de
Deleted: sha256:94d5db550d62032ddc8ad8d4cfef8bac06fe7d35757deb2f8638d0fdc1e89217
Deleted: sha256:5fbbb0e9bfb8f2a4d665cc60aaf4876191c057898db276d2d030a0d6123afc8e
Deleted: sha256:124a9d262ebecea284b6438b0a04766b076bd3f89cb0f29a8a475f26bf93911f
Deleted: sha256:5aa37b6c8e31197ab2f357c09755bcb83228ff0fb69c2009a12b6eddb087e884
Deleted: sha256:d0b1d5665c308823bbc5b8986d405e5202ade6994dfa00d8ff576eff372dd045
# docker rmi -f 镜像ID [镜像ID,...] 删除连带删除容器的镜像
[root@izwz91mv6i3x6k12jjqh60z ~]# docker rmi -f d1165f221234
Untagged: hello-world:latest
Untagged: hello-world@sha256:f2266cbfc127c960fd30e76b7c792dc23b588c0db76233517e1891a4e357d519
Deleted: sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726
#docker rmi -f $(docker images -aq) 删除所有容器和镜像
[root@izwz91mv6i3x6k12jjqh60z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
容器命令: #
前置环境,下载一个 centos
镜像
[root@izwz91mv6i3x6k12jjqh60z ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
7a0437f04f83: Pull complete
Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
新建并运行容器: #
[root@izwz91mv6i3x6k12jjqh60z ~]# docker run --help
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-d 以后台方式运行,并打印容器ID
--name=“string” 容器名字用于区分容器,
-p 指定容器的端口(设置主机和容器的端口映射)
-p ip:主机端口:容器端口(访问公网主机的端口可以访问到容器内容的端口)
-p 主机端口:容器端口
-p 容器端口
-P 随机指定端口
-it 使用交互方式运行,进入容器内查看内容
[root@izwz91mv6i3x6k12jjqh60z ~]# docker run -it centos /bin/bash
#容器内的centos ,发现很多命令并不完善
[root@e77313cc0ef1 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
#从容器中退出到主机
[root@e77313cc0ef1 /]# exit
exit
#主机的centos
[root@izwz91mv6i3x6k12jjqh60z ~]# ls
docker-client docker-client-latest docker-common docker-engine docker-latest docker-latest-logrotate docker-logrotate
列出所有运行的容器: #
[root@izwz91mv6i3x6k12jjqh60z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
-q 只显示容器编号
-a 列出当前正在运行的容器+带出历史运行过的容器
-n=? 显示最近创建的容器的个数
[root@izwz91mv6i3x6k12jjqh60z ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e77313cc0ef1 centos "/bin/bash" 3 minutes ago Exited (0) 2 minutes ago romantic_elgamal
17d31c5f5553 centos "/bin/bash" 9 minutes ago Exited (0) 9 minutes ago os1
19d5eac5de11 d1165f221234 "/hello" 3 hours ago Exited (0) 3 hours ago naughty_williams
[root@izwz91mv6i3x6k12jjqh60z ~]# docker ps -n=2
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e77313cc0ef1 centos "/bin/bash" 11 minutes ago Exited (0) 9 minutes ago romantic_elgamal
17d31c5f5553 centos "/bin/bash" 16 minutes ago Exited (0) 16 minutes ago os1
退出容器: #
exit #直接容器停止并退出
Ctrl + P + Q #容器不停止而退出
[root@izwz91mv6i3x6k12jjqh60z ~]# docker run -it centos /bin/bash
#进入容器后按住快捷键
[root@f3a97eadb092 /]#
#发现返回了主机
[root@izwz91mv6i3x6k12jjqh60z ~]#
[root@izwz91mv6i3x6k12jjqh60z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f3a97eadb092 centos "/bin/bash" 28 seconds ago Up 27 seconds thirsty_pasteur
删除容器: #
docker rm [-f] 容器ID #删除指定的容器,rm -f 表示强制删除正在运行的容器
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 #强制停止当前运行的容器
[root@izwz91mv6i3x6k12jjqh60z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f3a97eadb092 centos "/bin/bash" 28 seconds ago Up 27 seconds thirsty_pasteur
[root@izwz91mv6i3x6k12jjqh60z ~]# docker stop f3a97eadb092
f3a97eadb092
[root@izwz91mv6i3x6k12jjqh60z ~]# docker start f3a97eadb092
f3a97eadb092
[root@izwz91mv6i3x6k12jjqh60z ~]# docker restart f3a97eadb092
f3a97eadb092
[root@izwz91mv6i3x6k12jjqh60z ~]# docker kill f3a97eadb092
f3a97eadb092
[root@izwz91mv6i3x6k12jjqh60z ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f3a97eadb092 centos "/bin/bash" 12 minutes ago Exited (137) 5 seconds ago thirsty_pasteur
e77313cc0ef1 centos "/bin/bash" 25 minutes ago Exited (0) 23 minutes ago romantic_elgamal
17d31c5f5553 centos "/bin/bash" 30 minutes ago Exited (0) 30 minutes ago os1
19d5eac5de11 d1165f221234 "/hello" 4 hours ago Exited (0) 4 hours ago naughty_williams
[root@izwz91mv6i3x6k12jjqh60z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@izwz91mv6i3x6k12jjqh60z ~]# docker start f3a97eadb092
f3a97eadb092
[root@izwz91mv6i3x6k12jjqh60z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f3a97eadb092 centos "/bin/bash" 12 minutes ago Up 2 seconds thirsty_pasteur
后台启动容器: #
[root@izwz91mv6i3x6k12jjqh60z ~]# docker run -d centos
ddb941029e1fd47abfbd83968afc2103b2685d3ee0cf3f7ec32cd6f6fee96aca
[root@izwz91mv6i3x6k12jjqh60z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#常见问题:-d 运行之后,docker ps 发现它并没有运行
#原因:docker 容器使用后台运行,就必须要有一个前台进程,docker 发现没有应用,就会自动停止
#nginx 容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了。
查看日志: #
[root@izwz91mv6i3x6k12jjqh60z ~]# docker logs --help
Usage: docker logs [OPTIONS] CONTAINER
Fetch the logs of a container
Options:
--details Show extra details provided to logs
-f, --follow Follow log output
--since string Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
-n, --tail string 显示的日志的条数
-t, --timestamps Show timestamps
--until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
#自己写一段 shell 脚本
docker run -d centos /bin/sh -c "while true;do echo ios;sleep 1;done"
[root@izwz91mv6i3x6k12jjqh60z ~]# docker run -d centos /bin/sh -c "while true;do echo ios;sleep 1;done"
018801a5cdcfc762fb5def6d8f1ff3a7ec4d136f6b2812717937ee43a5f6ff66
[root@izwz91mv6i3x6k12jjqh60z ~]# docker logs 018801a5cdcfc762fb5def6d8f1ff3a7ec4d136f6b2812717937ee43a5f6ff66
ios....
查看容器进程的信息: #
[root@izwz91mv6i3x6k12jjqh60z ~]# docker top 018801a5cdcf
UID PID PPID C STIME TTY TIME CMD
root 9040 9015 0 16:09 ? 00:00:00 /bin/sh -c while true;do echo ios;sleep 1;done
root 9288 9040 0 16:11 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
查看镜像中的元数据: #
[root@izwz91mv6i3x6k12jjqh60z ~]# docker inspect 018801a5cdcf
[
{
"Id": "018801a5cdcfc762fb5def6d8f1ff3a7ec4d136f6b2812717937ee43a5f6ff66",
"Created": "2021-04-28T08:09:10.127985045Z",
"Path": "/bin/sh",
"Args": [
"-c",
"while true;do echo ios;sleep 1;done"
],
......
}
]
进入当前正在运行的容器: #
#通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
#方法一:docker exec进入容器后开启一个新的终端,可以在里面操作(常用)
#查看正在运行的容器
[root@izwz91mv6i3x6k12jjqh60z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
018801a5cdcf centos "/bin/sh -c 'while t…" 21 hours ago Up 21 hours confident_mayer
f79cbdf9c012 centos "/bin/bash" 21 hours ago Up 21 hours sweet_lehmann
#进入容器
[root@izwz91mv6i3x6k12jjqh60z ~]# docker exec -it 018801a5cdcf /bin/bash
[root@018801a5cdcf /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
#查看容器内的进程
[root@018801a5cdcf /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Apr28 ? 00:00:16 /bin/sh -c while true;do echo ios;sleep 1;done
root 9005 0 0 04:43 pts/0 00:00:00 /bin/bash
root 9042 1 0 04:43 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
root 9043 9005 0 04:43 pts/0 00:00:00 ps -ef
#方法二:docker attach 进入容器正在执行的终端,不会执行新的进程
[root@izwz91mv6i3x6k12jjqh60z ~]# docker attach 018801a5cdcf
ios
ios
ios
ios
#发现正在执行脚本。。
拷贝文件到主机: #
从容器中拷贝文件到主机上(拷贝目前是一个手动过程,未来使用 -v 卷技术可以实现自动拷贝)
#查看运行的容器
[root@izwz91mv6i3x6k12jjqh60z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
018801a5cdcf centos "/bin/sh -c 'while t…" 21 hours ago Up 21 hours confident_mayer
f79cbdf9c012 centos "/bin/bash" 21 hours ago Up 21 hours sweet_lehmann
#查看主机文件
[root@izwz91mv6i3x6k12jjqh60z ~]# ls
docker-client docker-client-latest docker-common docker-engine docker-latest docker-latest-logrotate docker-logrotate
#进入容器,新建一个测试文件后退出
[root@izwz91mv6i3x6k12jjqh60z ~]# docker attach f79cbdf9c012
[root@f79cbdf9c012 /]# cd /home
[root@f79cbdf9c012 home]# ls
[root@f79cbdf9c012 home]# touch test.java
[root@f79cbdf9c012 home]# exit
exit
#再次查看,发现容器已经不再运行
[root@izwz91mv6i3x6k12jjqh60z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
018801a5cdcf centos "/bin/sh -c 'while t…" 21 hours ago Up 21 hours confident_mayer
[root@izwz91mv6i3x6k12jjqh60z ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
018801a5cdcf centos "/bin/sh -c 'while t…" 21 hours ago Up 21 hours confident_mayer
f79cbdf9c012 centos "/bin/bash" 21 hours ago Exited (0) 25 seconds ago
#拷贝文件命令
[root@izwz91mv6i3x6k12jjqh60z ~]# docker cp f79cbdf9c012:/home/test.java /home
#查看是否拷贝成功
[root@izwz91mv6i3x6k12jjqh60z ~]# cd /home
[root@izwz91mv6i3x6k12jjqh60z home]# ls
admin test.java