docker常用命令

查看docker版本

docker version

查看系统信息,包括镜像和容器数量

docker info

查看容器详细信息

docker inspect 容器id

查看镜像

docker images

查看所有镜像

docker images -a

查看镜像,只列出id

docker images -q

删除镜像

docker rmi 镜像id

删除所有镜像

docker rmi docker images -aq

查看容器

docker ps

查看所有容器

docker ps -aq

查看创建镜像历史过程

docker history 镜像名

运行容器

docker run -itd 容器名/ID

docker run -itd --name 自定义名 -p 81:80 -v 宿主机路径:容器内路径 容器名 可以映射多个路径(可以多个-v)

进入容器

docker exec -it 容器名 /bin/bash

运行容器

docker run -it --restart=always centos:7 /bin/bash

-i	标准输入输出
-t	分配一个终端或控制台
--restart=always	容器随docker engine自启动,因为在重启docker的时候默认容器都会被关闭,也使用于create选项
-d	后台运行容器,并返回容器ID

docker run --rm centos:7 /bin/bash
--rm	当你退出容器后,这个容器就不用了,就可以加--rm,退出容器自动删除
# 注意:--rm和 -d不能共用

定义名字运行容器

docker run -itd --name nginx-1 nginx:latest

映射端口运行容器

docker run -itd -p 3307:3306 mysql:5.7

前面端口可以自己定义

退出容器

exit -- 若要断开与容器的连接,并且关闭容器

ctrl+p+q -- 如果只想断开和容器的连接而不关闭容器

启动容器 、停止容器 和 重启容器

docker start 容器id

docker stop 容器id

docker kill 容器id --强制终止容器

dockers kill $(docker ps -q) -- 杀死所有运行中的容器

docker restart 容器ID

让容器运行在后台

docker run -itd 镜像名

docker runn -itd --name 自定义名字 镜像名

进入容器内部

docker exec -it 容器ID /bin/bash

不进入容器内,执行命令

docker exec 容器ID touch /a.txt

修改容器名称

docker rename 要修改的名字 容器名字

删除容器

docker rm 容器id或名称 -- 要删除运行中的容器添加-f参数

定义格式删除容器

dockers rm $(docker ps -qf staus=exited) -f 代表过滤

docker pause c7 plause:暂停容器中所有的进程

docekr unpause c7 恢复容器内暂停的进程,与pause对应

下载镜像

docker pull mysql:5.7

上传镜像

docker tag mysql:5.7
docker push 10.31.162.25/qingfeng/mysql:5.7

查看容器详细

先运行容器,可以看到nginx-1的详细信息,包括IP
[root@localhost ~]# docker inspect nginx-1
[root@localhost ~]# curl -I http://172.17.0.3
HTTP/1.1 200 OK
Server: nginx/1.21.5
Date: Wed, 10 Jan 2024 08:28:01 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Tue, 28 Dec 2021 15:28:38 GMT
Connection: keep-alive
ETag: "61cb2d26-267"

在开启一个终端:--可以看到日志
[root@yixuan ~]# docker logs -f nginx1  
172.17.0.1 - - [10/Jan/2024:08:30:36 +0000] "HEAD / HTTP/1.1" 200 0 "-" "curl/7.29.0" "-"

查看容器进程

docker top 容器名
[root@localhost ~]# docker top nginx-1

容器内外copy文件

docker cp CONTAINER:PATH LOCALPATH   --从容器拷贝到本机
docker cp LOCALPATH CONTAINER:PATH   --从本机拷贝到容器

[root@localhost ~]# touch a.txt
# copy从容器拷贝到本机
[root@localhost ~]# docker cp nginx-1:/usr/local/bin/a.txt /root 
Successfully copied 1.54kB to /root

[root@localhost ~]# echo 1111 >> a.txt
#从本机拷贝到容器
[root@localhost ~]# docker cp /root/a.txt nginx-1:/usr/local/bin/
Successfully copied 2.05kB to nginx-1:/usr/local/bin/

# 进容器验证
root@f772ee281351:/usr/local/bin# cat a.txt 
1111

docker容器镜像打包制作

1.先有一个基础镜像,下载------>2.把镜像run起来----->3.进入容器做你的修改-------4.将这个容器打包成一个新镜像。
# 先运行容器
[root@localhost ~]# docker exec -it c7 /bin/bash
[root@ca5b7e391926 /]# yum -y install vim wget lrzsz net-tools

# 打包镜像文件
[root@localhost ~]# docker export -o c7.tar ca5b7e391926
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  c7.tar

# 导入新建镜像
[root@localhost ~]# docker import c7.tar c7:7.1
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
c7           7.1       b96f5733ec36   5 seconds ago   471MB
# 运行新建容器
[root@localhost ~]# docker run -it c7:7.1 /bin/bash

通过容器创建本地镜像

[root@localhost ~]# docker exec -it 1376a1631328 /bin/bash
# 创建镜像
[root@localhost ~]# docker commit 1376a1631328 ce:7.2
sha256:a46c03e55013eb5dd0920397c0f818d7aa693cc921554cd3751fa9f91347c3f1
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
ce           7.2       a46c03e55013   40 seconds ago   471MB

镜像迁移
# 将镜像打包,与下面的load命令相对应
[root@localhost ~]# docker save -o centos.tar ce:7.2
# 导入dockers镜像
[root@localhost ~]# docker load < centos.tar
d83beba0868c: Loading layer   2.56kB/2.56kB
Loaded image: ce:7.2