目录
一,关于镜像命令
1,查看镜像
docker images [options]
- -a:列出所有镜像
- -q:只显示镜像的ID
- -f:显示满足条件的镜像
2,查找镜像
docker search 镜像名称
[root@master ~]# docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos DEPRECATED; The official build of CentOS. 7549 [OK]
kasmweb/centos-7-desktop CentOS 7 desktop for Kasm Workspaces 35
bitnami/centos-base-buildpack Centos base compilation image 0 [OK]
bitnami/centos-extras-base 0
couchbase/centos7-systemd centos7-systemd images with additional debug… 7 [OK]
3,拉取镜像
docker pull 镜像名称[:TAG]
如果不绑定版本,则会拉取最新版本的镜像
[root@master ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
0ceb82207cd7: Pull complete
37f2405cae96: Pull complete
e2482e017e53: Pull complete
70deed891d42: Pull complete
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
4,删除镜像
4.1,删除单个命令:
docker rmi [OPTIONS] IMAGE [IMAGE…]
- -f:强制删除
4.2,删除多个镜像命令:
docker rmi $(docker images[OPTIONS] mysql)
docker rmi $(docker images[OPTIONS])
第一条是删除所有名字是mysql的镜像
第二条是删除所有镜像
[root@master ~]# docker rmi -f c20987f18b13
Untagged: mysql:5.7
Untagged: mysql@sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
二,关于容器命令
1,创建容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:
- -d:后台运行容器
- -it:交互模式运行容器
- -p:指定端口,格式为:宿主机端口:容器端口,比如:8080:8080
- -P:随机端口,容器内端口随机映射到宿主机端口
- --name="XXX":容器名称
- --link:容器互联
- --volume:绑定数据卷
[root@master ~]# docker run -d -it centos
d85f69c9a79d0cf3dfcb767b80d26a2ac3fab046dcab7bbbea573855c56173bf
1.1,创建容器但不启动,语法与run一样
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
2,启动和停止容器命令
- docker start 容器id
- docker stop 容器id
- docker restart 容器id
- docker kill 容器id
3,进入容器命令
docker exec:开启一个新的终端操作
[root@master ~]# docker exec -it d85f69c9a79d /bin/bash
[root@d85f69c9a79d /]#
docker attach:进入在当前容器中正在运行的终端操作
[root@master ~]# docker attach d85f69c9a79d
[root@d85f69c9a79d /]#
4,查看容器信息
docker ps [OPTIONS]
OPTIONS说明:
- 不写参数,显示正在运行的容器
- -a:显示所有镜像
- -q:只显示容器ID
- -n:显示最近创建的n个容器
[root@master ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d85f69c9a79d centos "/bin/bash" 7 minutes ago Exited (0) 13 seconds ago awesome_chaum
5,显示容器或镜像的元数据
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
[root@master ~]# docker inspect d85f69c9a79d
6,获取容器的日志
docker logs [OPTIONS] CONTAINER
OPTIONS说明:
- -t:显示时间戳
- --tail:只列出N条日志
- --since:显示指定时间后的日志
7,删除容器
7.1,删除单个容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
-f:强制删除
-v:删除与容器关联的数据卷
7.2,删除多个容器
docker rm $(docker ps[OPTIONS])
7,容器和宿主机的数据拷贝
格式——docker cp 容器ID:容器路径 宿主机路径(将容器文件拷贝到宿主机上)
格式——docker cp 宿主机路径 容器ID:容器路径(将宿主机文件拷贝到容器上)
[root@master ~]# docker cp d85f69c9a79d:/home/test.java /home
Preparing to copy...
Successfully copied 1.536kB to /home
3,Commit镜像
将自己的容器提交创建一个新的镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a:提交的作者名字
-m:提交的描述信息
[root@master home]# docker commit -a="authorName" -m="tomcat2.0app" b6cd7b8f9ff8 tomcat02:2.0
sha256:ebd32b10cbed064a89b6d4f9daacbc625eb3f787284460e693423e19dd04a6bd
4,容器数据卷
4.1容器与主机的挂载
作用:可以绑定容器和主机的目录,将容器中的数据备份到主机上,防止删库跑路
使用这个命令来挂载
docker run -it -v 容器外根目录:容器内根目录
挂载完了之后可以使用inspect命令查看容器详细信息
docker inspect 容器id
Mounts就是挂载的信息,Source是宿主机路径,Destination是容器内路径
如果停止运行容器后,修改主机上的文件,一样可以同步容器内文件的数据。如果将容器删除,挂载到主机上的数据卷依旧没有丢失,发现这可以实现容器数据持久化的功能
4.2,具名挂载和匿名挂载
使用命令后可以查看所有volume的信息
docker volume ls
我们发现这里全是匿名挂载,当我们需要具名挂载时,我们在-v后面写参数时,冒号前写我们的具名名字(注意:具名名字前不要加斜杠,否则就表示路径),后面写我们的挂载目录。
接着使用docker volume ls命令查看,发现我们具名挂载已经成功了
我们使用docker volume inspect centos01volume(具名名字)的命令来查看我们的数据卷
发现我们所有docker容器内的卷,没有指定目录的情况下都在/var/lib/docker/volumes下
4.3,容器与容器的挂载
docker run 容器1 --volumes-from 容器2
创建运行两个容器,然后使用命令后,就可以实现两个容器的数据同步了(注意:测试时注意两个容器的端口不要冲突)
5,万能命令
--help
假如忘了run命令怎么使用,可以直接执行docker run --help查看
这就是对docker命令的一些小总结,也是防止自己忘了,可以来看看