帮助命令
docker version #查看docker版本
docker info #查看docker信息
docker 命令 --help #万能命令
Docker中文帮助文档 https://www.runoob.com/docker/docker-command-manual.html
镜像命令
docker images
查看本机镜像
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 4 months ago 13.3kB
#解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小
#可选项
-a, --all # 列出所有的镜像
-q, --quiet # 只显示镜像id
docker search
搜索镜像
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 9525 [OK]
mariadb MariaDB is a community-developed fork of MyS… 3457 [OK]
#可选项 通过收藏来过滤
--filter=STARS=3000 # 搜索出来的镜像就是STARS大于3000的
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker search mysql --filter=STARS=3000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 9525 [OK]
mariadb MariaDB is a community-developed fork of MyS… 3457 [OK]
docker pull
下载镜像
# 下载镜像 docker pull 镜像名[:tag]
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker pull mysql
Using default tag: latest #如果不写 tag,默认就是 latest
latest: Pulling from library/mysql
afb6ec6fdc1c: Pull complete # 分层下载,docker iamge的核心 联合文件系统
0bdc5971ba40: Pull complete
97ae94a2c729: Pull complete
f777521d340e: Pull complete
1393ff7fc871: Pull complete
a499b89994d9: Pull complete
7ebe8eefbafe: Pull complete
597069368ef1: Pull complete
ce39a5501878: Pull complete
7d545bca14bf: Pull complete
211e5bb2ae7b: Pull complete
5914e537c077: Pull complete
Digest: sha256:a31a277d8d39450220c722c1302a345c84206e7fd4cdb619e7face046e89031d #签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真实地址
# 等价于它
docker pull mysql
docker pull docker.io/library/mysql:latest
# 指定版本下载
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker pull mysql:5.7
5.7: Pulling from library/mysql
afb6ec6fdc1c: Already exists
0bdc5971ba40: Already exists
97ae94a2c729: Already exists
f777521d340e: Already exists
1393ff7fc871: Already exists
a499b89994d9: Already exists
7ebe8eefbafe: Already exists
4eec965ae405: Pull complete
a531a782d709: Pull complete
270aeddb45e3: Pull complete
b25569b61008: Pull complete
Digest: sha256:d16d9ef7a4ecb29efcd1ba46d5a82bda3c28bd18c0f1e3b86ba54816211e1ac4
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
docker rmi
删除镜像!
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker rmi -f 镜像id #删除指定的镜像
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker rmi -f 镜像id 镜像id 镜像id #删除多个镜像
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker rmi -f $(docker images -aq) #删除全部的镜像
容器命令
说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习
docker pull centos #下载镜像
新建容器并启动
docker run [可选参数] image
#参数说明
--name="Name" 容器名字
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-P 随机指定端口 大写P
-P ip:主机端口:容器端口
-P 主机端口:容器端口 (常用)
-P 容器端口
-p 指定容器端口 小写p
# 测试,启动并进入容器
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker run -it centos /bin/bash
[root@97ef278de6f0 /]# ls # 查看容器内的centos,基础版本,很多命令都是不完整的!
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
# 退出容器 回到主机
[root@97ef278de6f0 /]# exit
exit
[root@iz2zeaet7s13lfkc8r3e2kz /]#
列出所有运行中的容器
#docker ps 命令
#列出当前正在运行的容器
-a # 列出当前正在运行的容器+历史运行的容器
-n=? # 显示最近创建的容器,参数=几个
-q # 只显示容器的编号
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
97ef278de6f0 centos "/bin/bash" 5 minutes ago Exited (0) 2 minutes ago goofy_khayyam
3a0067b9c3d2 bf756fb1ae65 "/hello" 22 hours ago Exited (0) 22 hours ago gallant_yalow
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps -a -n=1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
97ef278de6f0 centos "/bin/bash" 8 minutes ago Exited (0) 5 minutes ago goofy_khayyam
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps -aq
97ef278de6f0
3a0067b9c3d2
退出容器
exit #直接容器停止并退出
Ctrl + p + Q #快捷键 容器不停止退出
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker run -it centos /bin/bash
[root@5dae10d25a15 /]# [root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5dae10d25a15 centos "/bin/bash" 21 seconds ago Up 20 seconds charming_khorana
删除容器
docker rm 容器id # 删除指定的容器,不能删除正在运行的容器,如果强制删除 rm -f
docker rm -f $(docker ps -aq) # 删除所有的容器
docker ps -a -q|xargs docker rm # 删除所有的容器
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker rm 97ef278de6f0
97ef278de6f0
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker rm 5dae10d25a15
Error response from daemon: You cannot remove a running container 5dae10d25a153478058374a7347e0d5590faf73600bae7904bebe95ac2f958ff. Stop the container before attempting removal or force remove
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps -aq
5dae10d25a15
3a0067b9c3d2
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker rm -f $(docker ps -aq)
5dae10d25a15
3a0067b9c3d2
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps -aq
[root@iz2zeaet7s13lfkc8r3e2kz /]#
启动和停止容器的操作
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止当前容器
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker start a52c8069d8b3
a52c8069d8b3
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a52c8069d8b3 centos "/bin/bash" About a minute ago Up 6 seconds zen_bartik
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker stop a52c8069d8b3
a52c8069d8b3
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@iz2zeaet7s13lfkc8r3e2kz /]#
常用的其他命令
后台启动
# 命令 docker run -d 镜像名
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker run -d centos
a8cdc1d2837f7e5a684e3b30cd5b4a1d27f91c1abf3755d902bdd10675d69922
#问题 docker ps发现centos停止了
#常见的坑:docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
查看日志
docker logs -f -t --tail 容器,没有日志
# 自己编写一段shell脚本
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done"
2cade8e67ea8cb76326126a84ec90ad492b7cf2fd03aa9cd7bc4f9a4692d4a11
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
2cade8e67ea8 centos "/bin/sh -c 'while t…" 2 seconds ago Up 1
#显示日志
-tf #显示日志
--tail number #要显示日志的条数
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker logs -tf --tail 10 2cade8e67ea8
查看容器中进程信息
# 命令 docker top 容器id
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker top 2cade8e67ea8
UID PID PPID C STIME
root 13417 13393 0 16:46
root 13904 13417 0 16:53
查看镜像的元数据
#命令
docker inspect 容器id
# 测试
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker inspect 2cade8e67ea8
[
{
"Id": "2cade8e67ea8cb76326126a84ec90ad492b7cf2fd03aa9cd7bc4f9a4692d4a11",
"Created": "2020-05-22T08:46:29.264103976Z",
"Path": "/bin/sh",
"Args": [
"-c",
"while true;do echo kuangshen;sleep 1;done"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 13417,
"ExitCode": 0,
"Error": "",
"StartedAt": "2020-05-22T08:46:29.792169723Z",
"FinishedAt": "0001-01-01T00:00:00Z"
}
···
}
]
进入当前正在运行的容器
# 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
# 命令
docker exec -it 容器id bashShell
#测试
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker exec -it 2cade8e67ea8 /bin/bash
[root@2cade8e67ea8 /]#
# 方式二
docker attach 容器id
#测试
[root@iz2zeaet7s13lfkc8r3e2kz /]# docker attach 2cade8e67ea8
正在执行当前的代码...
# docker exec # 进入容器后开启一个新的终端,可以在里面操作(常用)
# docker attach # 进入容器正在执行的终端,不会启动新的进程!
从容器内拷贝文件到主机上
# 命令
docker cp 容器id:容器内路径 目的的主机路径
#测试
[root@iz2zeaet7s13lfkc8r3e2kz home]# docker attach 138a6014e476 进入容器
[root@138a6014e476 /]# cd /home
[root@138a6014e476 home]# ls
[root@138a6014e476 home]# touch test.java 创建文件
[root@138a6014e476 home]# ls
test.java
[root@138a6014e476 home]# exit 退出
exit
[root@iz2zeaet7s13lfkc8r3e2kz home]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@iz2zeaet7s13lfkc8r3e2kz home]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
138a6014e476 centos "/bin/bash" 2 minutes ago Exited (0) 11 seconds ago happy_wright
[root@iz2zeaet7s13lfkc8r3e2kz home]# docker cp 138a6014e476:/home/test.java /home 拷贝到主机
[root@iz2zeaet7s13lfkc8r3e2kz home]# ls
test.java www ysl ysl.java