1. 帮助启动类
- 启动docker: systemctl start docker
- 停止docker: systemctl stop docker
- 重启docker: systemctl restart docker
- 查看docker状态: systemctl status docker
- 开机启动: systemctl enable docker
- 查看docker概要信息: docker info
- 查看docker总体帮助文档: docker –help
- 查看docker命令帮助文档: docker 具体命令 –help
2. 镜像命令
1. docker images 列出本地主机上的镜像
[root@AliyunServer ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
172.28.109.11:5000/myubuntu 1.2 07939a421f78 5 hours ago 108MB
myubuntu 1.2 07939a421f78 5 hours ago 108MB
registry.cn-hangzhou.aliyuncs.com/mhk/myubuntu 1.1 22738596713b 21 hours ago 175MB
tomcat latest fb5657adc892 6 weeks ago 680MB
mysql 5.7 c20987f18b13 7 weeks ago 448MB
registry latest b8604a3fe854 2 months ago 26.2MB
ubuntu latest ba6acccedd29 3 months ago 72.8MB
hello-world latest feb5d9fea6a5 4 months ago 13.3kB
redis 6.0.8 16ecd2772934 15 months ago 104MB
billygoo/tomcat8-jdk8 latest 30ef4019761d 3 years ago 523MB
各个选项说明:
- REPOSITORY:表示镜像的仓库源
- TAG:镜像的标签版本号
- IMAGE ID:镜像ID
- CREATED:镜像创建时间
- SIZE:镜像大小
同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。 如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像
OPTIONS说明: -a :列出本地所有的镜像(含历史映像层) -q :只显示镜像ID
[root@AliyunServer ~]# docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
172.28.109.11:5000/myubuntu 1.2 07939a421f78 5 hours ago 108MB
myubuntu 1.2 07939a421f78 5 hours ago 108MB
registry.cn-hangzhou.aliyuncs.com/mhk/myubuntu 1.1 22738596713b 21 hours ago 175MB
tomcat latest fb5657adc892 6 weeks ago 680MB
mysql 5.7 c20987f18b13 7 weeks ago 448MB
registry latest b8604a3fe854 2 months ago 26.2MB
ubuntu latest ba6acccedd29 3 months ago 72.8MB
hello-world latest feb5d9fea6a5 4 months ago 13.3kB
redis 6.0.8 16ecd2772934 15 months ago 104MB
billygoo/tomcat8-jdk8 latest 30ef4019761d 3 years ago 523MB
[root@AliyunServer ~]# docker images -q
07939a421f78
07939a421f78
22738596713b
fb5657adc892
c20987f18b13
b8604a3fe854
ba6acccedd29
feb5d9fea6a5
16ecd2772934
30ef4019761d
[root@AliyunServer ~]# docker images -qa
07939a421f78
07939a421f78
22738596713b
fb5657adc892
c20987f18b13
b8604a3fe854
ba6acccedd29
feb5d9fea6a5
16ecd2772934
30ef4019761d
##
2. docker search [OPTIONS] 某个XXX镜像名字
[root@AliyunServer ~]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 12086 [OK]
mariadb MariaDB Server is a high performing open sou… 4631 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 904 [OK]
mysql/mysql-cluster Experimental MySQL Cluster Docker images. Cr… 92
centos/mysql-57-centos7 MySQL 5.7 SQL database server 92
centurylink/mysql Image containing mysql. Optimized to be link… 59 [OK]
databack/mysql-backup Back up mysql databases to... anywhere! 54
prom/mysqld-exporter 46 [OK]
deitch/mysql-backup REPLACED! Please use http://hub.docker.com/r… 40 [OK]
linuxserver/mysql A Mysql container, brought to you by LinuxSe… 35
OPTIONS说明: –limit : 只列出N个镜像,默认25个
[root@AliyunServer ~]# docker search --limit 5 mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 12086 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 904 [OK]
mysql/mysql-cluster Experimental MySQL Cluster Docker images. Cr… 92
centos/mysql-57-centos7 MySQL 5.7 SQL database server 92
schickling/mysql-backup-s3 Backup MySQL to S3 (supports periodic backup… 31 [OK]
3. docker pull 某个XXX镜像名字
下载镜像 docker pull 镜像名字[:TAG] docker pull 镜像名字,没有TAG就是最新版 等价于 docker pull 镜像名字:latest
[root@AliyunServer ~]# docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
Status: Image is up to date for ubuntu:latest
docker.io/library/ubuntu:latest
4. docker system df 查看镜像/容器/数据卷所占的空间
[root@AliyunServer ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 10 8 2.371GB 692.6MB (29%)
Containers 13 1 39.41MB 39.41MB (99%)
Local Volumes 6 4 479.9MB 219.7MB (45%)
Build Cache 0 0 0B 0B
5. docker rmi 某个XXX镜像名字ID
删除镜像
- 删除单个
docker rmi -f 镜像ID
- 删除多个
docker rmi -f 镜像名1:TAG 镜像名2:TAG
- 删除全部
docker rmi -f $(docker images -qa)
[root@AliyunServer ~]# docker rmi hello-world
Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container 915ce3b1145d is using its referenced image feb5d9fea6a5
[root@AliyunServer ~]# docker rmi -f hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:507ecde44b8eb741278274653120c2bf793b174c06ff4eaa672b713b3263477b
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
3. 容器命令
有镜像才能创建容器, 这是根本前提(下载一个CentOS或者ubuntu镜像演示)
1. 新建+启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG…] OPTIONS说明(常用):有些是一个减号,有些是两个减号 –name=”容器新名字” 为容器指定一个名称; -d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行); -i:以交互模式运行容器,通常与 -t 同时使用; -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用; 也即启动交互式容器(前台有伪终端,等待交互); -P: 随机端口映射,大写P -p: 指定端口映射,小写p
使用镜像ubuntu:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。 docker run -it ubuntu /bin/bash
[root@AliyunServer ~]# docker run -it ubuntu /bin/bash
root@4743014cb0d6:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:47 pts/0 00:00:00 /bin/bash
root 9 1 0 08:47 pts/0 00:00:00 ps -ef
root@4743014cb0d6:/#
参数说明: -i: 交互式操作。 -t: 终端。 ubuntu : ubuntu 镜像。 /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。 要退出终端,直接输入 exit
2. 列出当前所有正在运行的容器
docker ps [OPTIONS] OPTIONS说明(常用): -a :列出当前所有正在运行的容器+历史上运行过的 -l :显示最近创建的容器。 -n:显示最近n个创建的容器。 -q :静默模式,只显示容器编号。
[root@AliyunServer ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4743014cb0d6 ubuntu "/bin/bash" 3 minutes ago Up 3 minutes silly_hermann
f7463c872a14 mysql:5.7 "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
3. 退出容器
两种退出方式
- exit
run进去容器,exit退出,容器停止
- ctrl+p+q
run进去容器,ctrl+p+q退出,容器不停止
4. 启动已停止运行的容器
docker start 容器ID或者容器名
5. 停止容器
docker stop 容器ID或者容器名
6. 强制停止容器
docker kill 容器ID或容器名
7. 删除已停止的容器
docker rm 容器ID
8. 一次性删除多个容器实例
docker rm -f $(docker ps -a -q) docker ps -a -q | xargs docker rm
9. 重启容器
docker restart 容器ID或者容器名
10. 查看容器日志
docker logs 容器ID
[root@AliyunServer ~]# docker logs f7463c872a14
2022-02-09 07:38:31+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.36-1debian10 started.
2022-02-09 07:38:31+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2022-02-09 07:38:31+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.36-1debian10 started.
...
11. 查看容器内运行的进程
docker top 容器ID
[root@AliyunServer ~]# docker top f7463c872a14
UID PID PPID C STIME TTY TIME CMD
polkitd 2056 2038 0 15:40 ? 00:00:02 mysqld
root 2161 2038 0 15:41 pts/0 00:00:00 /bin/bash
root 2170 2161 0 15:41 pts/0 00:00:00 mysql -u root -p
12. 查看容器内部细节
docker inspect 容器ID
[root@AliyunServer ~]# docker inspect f7463c872a14
[
{
"Id": "f7463c872a147be8b40a2b36a879bad144903db09d0dd4a626ab698bd3e8fd95",
"Created": "2022-02-09T07:38:31.098276567Z",
"Path": "docker-entrypoint.sh",
"Args": [
"mysqld"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 2056,
"ExitCode": 0,
"Error": "",
"StartedAt": "2022-02-09T07:40:45.942085391Z",
"FinishedAt": "2022-02-09T07:40:45.570984489Z"
},
...
13. 进入正在运行的容器并以命令行交互
docker exec -it 容器ID bashShell
[root@AliyunServer ~]# docker exec -it f7463c872a14 /bin/bash
root@f7463c872a14:/#
重新进入docker attach 容器ID
上述两个区别 attach 直接进入容器启动命令的终端,不会启动新的进程 用exit退出,会导致容器的停止。 exec 是在容器中打开新的终端,并且可以启动新的进程 用exit退出,不会导致容器的停止。 推荐使用 docker exec 命令,因为退出容器终端,不会导致容器的停止。
14. 从容器内拷贝文件到主机上
容器→主机 docker cp 容器ID:容器内路径 目的主机路径
[root@AliyunServer ~]# docker cp f7463c872a14:/usr/local/share/mycp.txt /tmp
[root@AliyunServer ~]# cd /tmp/
[root@AliyunServer tmp]# ll
total 4
-rw------- 1 root root 0 Feb 8 23:41 AliyunAssistClientSingleLock.lock
-rw-r--r-- 1 root root 0 Feb 9 17:15 mycp.txt
drwx------ 3 root root 4096 Feb 9 15:15 systemd-private-d75578a72e1148e4acae09601435cfae-chronyd.service-XpxcRq
15. 导入和导出容器
export 导出容器的内容留作为一个tar归档文件[对应import命令] import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export] docker export 容器ID > 文件名.tar cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号