#启动docker
sudo systemctl start docker
#停止docker
sudo systemctl stop docker
#重启docker
sudo systemctl restart docker
#查看dokcer 状态
sudo systemctl status docker
#开机启动docker
sudo systemctl enable docker
# 查看docker 基本信息
docker info
#查看docker 版本
docker version
# 查看docker 帮助文档
docker --help
#查看docker某个命令帮助
docker xx --help
docker images [OPTIONS] [REPOSITORY[:TAG]]
- OPTIONS
- -q 只显示镜像ID,不加 则显示全部字段- REPOSITORY
- 加上REPOSITORY表示只查看指定镜像名称的镜像,不加 显示全部镜像
$ docker images
#或[root@localhost ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/redis latest dc7b40a0b05d 16 months ago 117 MB
docker.io/openjdk 17.0-jdk-oracle 5e28ba2b4cdb 20 months ago 471 MB
ccf-service-dispatch latest 3f5c5e0a7370 3 years ago 224 MB
$ docker images redis
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/redis latest dc7b40a0b05d 16 months ago 117 MB
$ docker images -q redis
dc7b40a0b05d
docker search [OPTIONS] 镜像名称
- OPTIONS --limit num 限制数量
[root@localhost ~]# docker search redis
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/redis Redis is an open source key-value store th... 12580 [OK]
docker.io docker.io/bitnami/redis Bitnami Redis Docker Image 271 [OK]=
[root@localhost ~]# docker search --limit 2 redis
NAME:镜像名称, DESCRIPTION :镜像描述 ,STARS :点赞数量 OFFICIAL:是否官方认证, AUTOMATED:
是否自动提交
docker pull NAME[:TAG|@DIGEST]
- tag 则拉取最新的镜像 tage为lastest
[root@master ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 14 6 4.006 GB 2.049 GB (51%)
Containers 9 5 90.09 MB 46.61 MB (51%)
Local Volumes 36 2 3.148 GB 3.148 GB (99%)
如果你想要自定义镜像名称或者推送镜像到其他镜像仓库,你可以使用docker tag命令将镜像重命名。
docker tag [SOURCE_IMAGE][:TAG] [TARGET_IMAGE][:TAG]
$ docker tag busybox:latest mybusybox:latest
#执行完docker tag命令后,可以使用查询镜像命令查看一下镜像列表:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 018c9d7b792b 3 weeks ago 1.22MB
mybusybox latest 018c9d7b792b 3 weeks ago 1.22MB
可以看到,镜像列表中多了一个mybusybox的镜像。但细心的同学可能已经发现,busybox和mybusybox这两个镜像的 IMAGE ID 是完全一样的。为什么呢?实际上它们指向了同一个镜像文件,只是别名不同而已。
构建镜像主要有两种方式:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
- Options:
-a, --author string Author (e.g., “John Hannibal Smith [email protected]”)
-c, --change list Apply Dockerfile instruction to the created image
-m, --message string Commit message
-p, --pause Pause container during commit (default true)
当对某个容器进行文件编辑或者扩展功能后,需要保存为新的镜像时
docker rmi [OPTIONS] IMAGE [IMAGE…]
- OPTIONS
- -f 强制删除
- IMAGE :镜像名称[:TAG]或镜像ID
#删除hello-world 镜像
$ docker rmi hello-world
#删除redis:latest 和hello-world 镜像
$ docker rmi -f redis:latest hello-world
# 删除全部
$ docker rmi -f ${docker images -qa}
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
- OPTIONS
- –name=名称 为容器指定名称,不指定 随机分配
- -d 后台运行容器(守护模式) 并返回容器ID
- -it ,启动一个交互式容器,-i:交互式运行, -t:分配一个伪终端
- -d 用用说明
-d 以后台模式启动一个容器,这个容器必须有一个前台线程即容器必须运行一些挂起的命令(如 top,tail 之类),否则容器认为没事儿可做,直接退出停止,如ubuntu ,nginx 之类的容器就不适合,这类必须以前台进程的形式运行。
#运行一个ubuntu 容器,并启动 交互式shell(/bin/bash)操作容器
root@LAPTOP-BIJVAB4T:~# docker run -it ubuntu /bin/bash
#新容器
root@9ca40bc6fb09:/#
docker create [OPTIONS] IMAGE [COMMAND] [ARG…]
用法与docker run 一致
docker ps [OPTIONS]
- 不加参数 列出所有正在运行的容器
- OPTIONS
- -a 列出所有创建过的容器
- -l 列出最近创建的容器
docker start [OPTIONS] CONTAINER [CONTAINER…]
- CONTAINER 可以是容器ID或容器名称
将运行中的容器终止,并且重新启动它
docker restart [OPTIONS] CONTAINER [CONTAINER…]
- CONTAINER 可以是容器ID或容器名称
docker stop [OPTIONS] CONTAINER [CONTAINER…]
- CONTAINER 可以是容器ID或容器名称
docker kill [OPTIONS] CONTAINER [CONTAINER…]
- CONTAINER 可以是容器ID或容器名称
docker rm [OPTIONS] CONTAINER [CONTAINER…]
- CONTAINER 可以是容器ID或容器名称
- docker rm CONTAINER : 删除停止的容器
- OPTIONS
- -f : 强制删除容器,不管容器是否正在运行
docker logs [OPTIONS] CONTAINER
- OPTIONS
- -f 追踪日志
- n 显示最新的 x 行,默认显示全部
docker top CONTAINER [ps OPTIONS]
docker inspect [OPTIONS] NAME|ID [NAME|ID…]
- docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
- 常用命令 docker exec -it CONTAINER /bin/bash
- docker attach [OPTIONS] CONTAINER 不推荐使用:
- 两者区别
- attach 直接进入 容器启动命令的终端(不开启新的终端,不开启新的进程),用exit 退出容器,会导致容器停止
- exec 是在容器中打开新的终端,并且可以启动新的进程,用exit 退出容器,不会导致容器停止
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|
root@LAPTOP-BIJVAB4T:~# docker cp 9ca:/tmp/a.txt /root/tmp
Successfully copied 2.05kB to /root/tmp/
docker export [OPTIONS] CONTAINER
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
我们可以使用docker export CONTAINER命令导出一个容器到文件,不管此时该容器是否处于运行中的状态。通过docker export命令导出的文件,可以使用docker import命令导入,执行完docker import后会变为本地镜像,最后再使用docker run命令启动该镜像,这样我们就实现了容器的迁移
root@LAPTOP-BIJVAB4T:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9ca40bc6fb09 ubuntu "/bin/bash" 15 hours ago Up 2 hours objective_chaum
# 进入容器
root@LAPTOP-BIJVAB4T:~# docker exec -it 9ca /bin/bash
#z在容器内创建文件
root@9ca40bc6fb09:/tmp# echo "addddd">>a.txt
#导出容器
root@LAPTOP-BIJVAB4T:~# docker export 9ca > ubuntu.tar
#导入容器
root@LAPTOP-BIJVAB4T:~# dokcer import ubuntu.tar myubuntu:test
#查看镜像
root@LAPTOP-BIJVAB4T:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myubuntu test b94fee4da8e6 14 seconds ago 72.8MB
ubuntu latest ba6acccedd29 2 years ago 72.8MB
#创建容器
root@LAPTOP-BIJVAB4T:~# docker run -it myubuntu:test /bin/bash
#查看容器内的文件 可以看到我们之前在 /tmp 目录下创建的 a.txt文件也被迁移过来了
root@e77f133353db:/# cat /tmp/a.txt
addddd