文章目录
1. 帮助命令
#查看docker的版本信息
docker version
#查看docker系统的详细信息
docker info
# 查看docker所以有命令
docker --help
更多命令可参考官方文档:
https://docs.docker.com/reference/
2. 镜像命令
1. 查所有本地主机上的镜像
[root@node01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 7 months ago 13.3kB
#解释:
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小
# 可选项
-a, --all #列出所有镜像
-q, --quiet #只显示镜像的id
2. docker search 搜索镜像(以mysql为例)
[root@node01 ~]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 9893 [OK]
mariadb MariaDB is a community-developed fork of MyS… 3621 [OK]
... ...
#可选项
--filter=STARS=5000 # 搜索出的镜像就行STARS大于5000的
[root@node01 ~]# docker search mysql --filter=STARS=5000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 9893 [OK]
3. docker pull 下载镜像(以mysql为例)
#下载镜像 docker pull 镜像名[:tag]
[root@node01 ~]# docker pull mysql
Using default tag: latest # 如果不写tag默认就是latest 最新版本
latest: Pulling from library/mysql #分层下载 docker images的核心, 联合文件系统
bf5952930446: Pull complete
8254623a9871: Pull complete
938e3e06dac4: Pull complete
ea28ebf28884: Pull complete
f3cef38785c2: Pull complete
894f9792565a: Pull complete
1d8a57523420: Pull complete
6c676912929f: Pull complete
ff39fdb566b4: Downloading 76.12MB
ff39fdb566b4: Pull complete
fff872988aba: Pull complete
4d34e365ae68: Pull complete
7886ee20621e: Pull complete
Digest: sha256:c358e72e100ab493a0304bda35e6f239db2ec8c9bb836d8a427ac34307d074ed #签名信息(防伪标志)
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址
#指定文件版本下载
[root@node01 ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
bf5952930446: Already exists #已经下载过的不会重复下载
8254623a9871: Already exists
938e3e06dac4: Already exists
ea28ebf28884: Already exists
f3cef38785c2: Already exists
894f9792565a: Already exists
1d8a57523420: Already exists
5f09bf1d31c1: Pull complete #没下载过的才会下载
1b6ff254abe7: Pull complete
74310a0bf42d: Pull complete
d398726627fd: Pull complete
Digest: sha256:da58f943b94721d46e87d5de208dc07302a8b13e638cd1d24285d222376d6d84
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
# 查看镜像
[root@node01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 718a6da099d8 3 weeks ago 448MB
mysql latest 0d64f46acfd1 3 weeks ago 544MB
hello-world latest bf756fb1ae65 7 months ago 13.3kB
4. docker rmi 删除镜像
#根据id进行删除
[root@node01 ~]# docker rmi -f 718a6da099d8
Untagged: mysql:5.7
Untagged: mysql@sha256:da58f943b94721d46e87d5de208dc07302a8b13e638cd1d24285d222376d6d84
Deleted: sha256:718a6da099d82183c064a964523c0deca80619cb033aadd15854771fe592a480
Deleted: sha256:058d93ef2bfb943ba6a19d8b679c702be96e34337901da9e1a07ad62b772bf3d
Deleted: sha256:7bca77783fcf15499a0386127dd7d5c679328a21b6566c8be861ba424ac13e49
Deleted: sha256:183d05512fa88dfa8c17abb9b6f09a79922d9e9ee001a33ef34d1bc094bf8f9f
Deleted: sha256:165805124136fdee738ed19021a522bb53de75c2ca9b6ca87076f51c27385fd7
# 删除单个镜像
docker rmi -f 镜像id
#删除多个镜像
docker rmi -f 镜像id 镜像id 镜像id 镜像id ...
# 删除所有镜像(慎用)
docker rmi -f $(docker images -aq)
3.容器命令
说明:有了镜像才可以创建容器,下载一个linux CentOS镜像用来测试学习
1. 启动容器
#下载镜像
docker pull centos
#查看镜像
docker images
#启动并进入容器
docker run -it centos /bin/bash
#退出
exit
2.列出所有正在运行的容器
docker ps
-a #列出正在运行的容器+ 历史运行过的容器
-n=? #显示最近创建的容器
-q #只显示容器的变化
[root@node01 ~]# docker ps -a -n=1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1ff5c5015125 centos "/bin/bash" 9 minutes ago Exited (0) 5 minutes ago kind_ritchie
3. 退出容器
exit #关闭并退出容器
Ctrl + P + Q #退出但不关闭容器
4. 删除容器
# 删除指定的容器,不能删除正在运行的,如果强制删除使用 rm -f
docker rm 容器id
# 删除所有容器
docker rm -f $(docker ps -aq)
#删除所有容器(2)
docker ps -aq | xargs docker rm
5. 启动和停止容器的操作
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
4.其它常用命令
1.后台启动容器
docker run -d centos
#问题: docker ps ,发现centos停止了
#常见的坑:docker 容器后台运行就必须要有一个前台进程
2.查看日志命令
docker logs -tf --tail 指定日志的行数 容器id
#测试:
docker run -d centos /bin/sh -c "while true;do echo hongcheshijie;sleep 1;done"
#查看启动的容器信息
docker ps
#查看日志信息
docker logs -tf --tail 50cc7139de05
3. 查看容器中的进程命令
docker top 容器id
4. 查看镜像元数据
docker inspect 容器id
5. 进入当前正在运行的容器
#方式一
docker exec -it 容器id /bin/bash
#方式二
docker attach 容器id
#因为之前使用了 while true 所以这里需要使用 ctrl + p + q 退出
#或者重新开启一个终端,强制删除所有容器 docker rm -f $(docker ps -aq)
#区别:
# docker exec 进入容器后开启一个新的终端,可以在里面操作
# docker attach 进入容器正在执行的终端,不会启动新的进程!
6. 手动从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目标主机路径
#测试:
#启动一个容器并进入
docker run -it centos /bin/bash
# 进入opt目录
cd /opt/
# 创建一个test.txt 文件
touch test.txt
# 退出
exit
# 将文件拷贝到主机上
docker cp e81e989e22eb:/opt/test.txt /opt
# 查看
ll /opt