docker安装、启动,容器的启停、删除,导入导出镜像、容器与宿主机之间的文件传输
前言
最近在自学Docker,对常用的命令进行整理,便于大家后续查阅。
一、安装Docker
1.1 在centos服务器中配置“docker 的阿里云镜像地址”
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.2 安装Docker
yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
1.3 安装时可能会报缺少依赖
1.4依次安装好所缺少的依赖包
yum install -y container-selinux
yum install -y fuse-overlayfs
yum install -y slirp4netns
yum install -y libseccomp
1.5 重新执行docker安装命令,安装成功。
yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
二、Docker引擎启停
2.1 启动Docker引擎
systemctl start docker
2.2 关闭Docker引擎
systemctl stop docker
2.3 重启Docker引擎
systemctl restart docker
2.4 查看当前版本Docker信息
docker version
2.5 查看Docker运行状态
systemctl status docker
2.7 设置开机自启动
systemctl enalbe docker
三、配置阿里云镜像加速
3.1 登录阿里云
https://cr.console.aliyun.com
直接跳转地址:“阿里云-计算,为了无法计算的价值 (aliyun.com)
3.2 搜索“容器镜像服务”,如下操作配置即可
3.3 注意“替换自己的地址”换成自己的阿里云对应加速信息,否则无法加速。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://#替换自己的地址#.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
四、卸载Docker引擎
4.1 通过yum remove 卸载
yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
4.2 手工删除两个服务器目录
rm –rf 删除/var/lib 下的 docker 与 containerd 两个目录,这两个目录中存放着镜像、容器、数据卷,它们在前面删除时不能被自动删除,需要手动删除。
五、Docker 镜像命令合集
5.1 docker pull
通过 docker pull 命令可以将指定的镜像从 docker hub 拉取到本地。如果没有指定镜像则会抛出一个 Error。pull 命令中的<tag>也可以不写,此时默认的<tag>为 latest。
还加上选项-q 后就可简化拉取过程中的日志输出。
5.2 **docker images **
5.2.1 通过 docker images 命令可查看本地所有镜像资源信息。这些镜像会按照镜像被创建的
时间由近及远排序。
##注释
REPOSITORY:镜像仓库名称
TAG:镜像版本号
IMAGE ID:镜像的唯一标识
CREATE:镜像的创建时间
SIZE:镜像大小
5.2.2 查看指定镜像
docker images ubuntu
5.2.3 查看完整镜像ID
docker images --no-trunc
5.2.4 查看镜像digests
docker images --digests
5.2.5 过滤镜像
#dangling=true 用于过滤出悬虚镜像,REPOSITORY 与 TAG,显示的是<none>。
docker images -f dangling=true
#-f reference 用于列举出<repository>:<tag>与指定表达式相匹配的所有镜像。
docker images -f reference=tomcat:*
5.3 docker search
docker search mysql
#过滤检索结果
docker search mysql --filter is-official=true
#限制检索数量
docker search mysql --limit=3
5.4 docker rmi
5.4.1 该命令用于删除指定的本地镜像,rmi即(remove images)
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zookeeper latest 36c607e7b14d 2 years ago 278MB
redis latest 7614ae9453d1 2 years ago 113MB
ubuntu latest ba6acccedd29 2 years ago 72.8MB
hello-world latest feb5d9fea6a5 2 years ago 13.3kB
tomcat 8.5.49 6408fdc94212 4 years ago 507MB
tomcat 8.5.32 5808f01b11bf 5 years ago 463MB
[root@localhost docker]# docker rmi 6408fdc94212
Untagged: tomcat:8.5.49
Untagged: tomcat@sha256:996d406c509a4ebe2f4e96eeda331a354f1663b7ec0ff06685b75c4decef7325
Deleted: sha256:6408fdc9421224b10341ab178d573aa33ef6dfe10b34e525cd366fc85a201ab8
Deleted: sha256:a9abc89823a8632001d0f5e45fe9e8f400fa3deb97844915852b21644612a595
Deleted: sha256:4527a3b8acf03e084e08bbe5bade8b26ddea11e686e698a6b5f1f83d51f8f877
Deleted: sha256:ab0e4bc9eb374158707db581ef55a732332cfd3fcc505baf22490e901eda185f
Deleted: sha256:b35dd16822b6808f5f8bd5da55f3241ff5cade5eb7d25d1440df90209ca159b8
Deleted: sha256:97200aa46a2ef0247e91462cc37b0bfa10b167da4a9fce0d54d598f70edb06d5
Deleted: sha256:7f3e89512c144c481c815517998f69b6063f33f36d6946ef1ec6cda6c42cd6e5
Deleted: sha256:23b818b261d944ed79f99d8b96ff917835f68b296a0002e094b3db2555e26f12
Deleted: sha256:8b595b250565c6ab1163e71f4104587188518185719929ce0429e16fdfb76b1e
Deleted: sha256:d692181dfebae7a739bdcbd55ce40348dcedecaa741d2978933ecc830955c44c
Deleted: sha256:e4b20fcc48f4a225fd29ce3b3686cc51042ce1f076d88195b3705b5bb2f38c3d
[root@localhost docker]#
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zookeeper latest 36c607e7b14d 2 years ago 278MB
redis latest 7614ae9453d1 2 years ago 113MB
ubuntu latest ba6acccedd29 2 years ago 72.8MB
hello-world latest feb5d9fea6a5 2 years ago 13.3kB
tomcat 8.5.32 5808f01b11bf 5 years ago 463MB
5.4.2 强制删除镜像,加参数-f
[root@localhost docker]# docker rmi -f hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60f
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
5.4.3 删除所有镜像
docker rmi -f $(docker images -q)
六、导入导出镜像
6.1 导出镜像docker save
docker save 命令用于将一个或多个镜像导出为 tar 文件
docker save -o wlttom.tar tomcat:8.5.32
6.2 导入镜像docker load** **
docker load -i wlttom.tar
七、容器运行与启动命令
小结:docker run 掌握两种启动模式:交互模式-it,分离模式-d。
#以交互模式运行
docker run --name ubuntu -it ubuntu:latest /bin/bash
#直接运行tomcat
docker run --name tomcat2 -it tomcat:8.5.32
#指定tomcat端口
docker run --name tomcat3 -it -p 8081:8080 tomcat:8.5.32
#分离模式运行
docker run --name tomcat4 -dp 8085:8080 tomcat:8.5.32
八、容器创建命令
docker create 命令仅创建容器但不启动,其用法与 docker run 非常相似。注意,其没有
-d 选项。
docker create --name mytom01 -p 8083:8080 tomcat:8.5.32
九、容器退出命令
容器的两种退出方式:1 .exit 2. ctrl+p+q
#退出并停止容器 exit
#通过 docker ps –a 可以查看到该容器已经退出了。
#退出不停止容器 Ctrl + P + Q
#再通过 docker ps 可以查看到其是 UP 状态,说明容器退出了但并没有停止
十、容器查看命令
docker ps 命令 -a -q -l -n 用法
#查看所有容器
docker PS -a
#查看所有处于运行状态的容器的 ID
docker ps –q
#查看最后创建的容器,无论该容器是否处于运行状态
docker ps –l
#查看最后创建的指定个数的容器,无论该容器是否处于运行状态。
docker ps –n 3
十一、容器交互命令exec与attach
11.1 exec
交互方式进入运行中的进程
#运行一个tomcat容器
docker run --name tom01 -dp 8081:8080 tomcat:8.5.32
#交互方式进入容器
docker exec -it tom01 /bin/bash
#此时退出容器,容器正常运行
exit
exit退出后,查看正在运行的容器,发现容器并未退出。说明 exec 命令会创建一个新
的独立于容器的进程,而 exit 命令仅用于结束该新建进程。
通过exec外部操作容器
docker exec -it tom01 ls -l
11.2 attach
#容器附加标准输出
docker attach tom01
小结:
1.docker exec:会新建一个进程来访问容器进程,一般与-it 选项联用,一般使用 exit 命令
退出并终止当前进程。
- docker attach:不会新建进程,而是将标准输入与标准输出直接附着在容器进程上,exit退出容器会停止运行。
十二、容器内进程查看命令
docker top 可以查看指定的正在运行的容器中正在运行的进程详情,这个详情包括
当前这个进程正在运行的命令
docker top da5b421b09b0
docker log,容器内日志查看命令
docker logs tomcat05
#查看最后5条日志
docker logs -n 5 tomcat05
#显示自从 2024 年 6 月 30日后产生日志的最后 10 条日志
docker logs --since="2024-06-30" --tail =10 tomcat05
#显示自从 30 分钟之前产生日志中的最后 3 条。其中 m 表示分,可以使用 s 表示秒,h 表示小时。
docker logs --since=20m --tail=3 tomcat05
#查看的是最后 10 条日志的时间戳
docker logs -t --tail=10 tomcat05
#动态追踪日志
docker logs -f --tail=200 tomcat05
十三、容器启停命令
#启动
docker start mytom01
#重启
docker restart mytom01
#停止
docker stop mytom01
docker stop $(docker ps -qa )
#强制停止
docker kill mytom01
docker kill $(docker ps -qa )
#暂停容器对外提供服务
docker pause mytom01
#解除暂停
docker unpause mytom01
#删除容器
docker rm 71fa302af1ab
或
docker rm mytom01
#强制删除
docker rm -f mytom01
小结:
1.容器启动命令启动的是容器本身,但容器在启动的同时会启动一个应用,而这个应用是
根据容器创建时命令(docker run 或 docker create)中的[command]指定,或通过容器镜
像的 Dockerfile 中的 CMD 指令指定。
2.容器停止命令停止的是容器本身,但在容器停止之前会先停止容器中的所有进程的运行,也就停止了对外提供服务的应用进程。
- 暂停命令仅暂停的是容器对外提供服务,容器本身并没有停止运行,所以容器中的应用
也就没有停止运行,只不过其不能通过容器再对外提供服务了。
- 暂停/解除暂停两个命令对 tomcat 容器中的 tomcat 进程的运行没有任何影响,这两个
命令的运行并不会记录到 tomcat 的启停日志中。因为 tomcat 的启停日志记录的仅是
tomcat 的启动、暂停、解除暂停与停止的状态变化。
十四、docker cp宿主机与容器文件复制
14.1 容器内复制文件至宿主机当前目录
docker cp tomcat01:/usr/local/tomcat/test.txt ./
14.2 宿主机文件拷贝至容器内
docker cp test1.txt tomcat01:/usr/local/tomcat
小结:docker cp命令本质是从一个文件系统复制到另一个文件系统。与容器运行状态无关。
十五、修改容器层生成新镜像
15.1 创建并启动一个容器
docker run --name mycentos -it centos:7
15.2 安装net-tools网络工具
[root@d2e50b40f7b1 /]# yum install -y net-tools
15.3 生成镜像
[root@localhost ~]# docker commit -a "W<[email protected]>" -m "Added net-tools" mycentos centos7:add-tools
sha256:e441ab1166083bb59e9a18d1635d24255191916a7963cf0fc77bb38ac402aa03
15.4 启动新镜像
[root@localhost ~]# docker run --name newcentos -it centos7:add-tools
15.5 生成悬虚镜像
悬虚镜像,即没有<repository>与<tag>的镜像。悬虚镜像一般都是由于某些失误操作或
其它一些操作而生成的副产物,一般是要被清除掉的。如果非要使用悬虚镜像,那只能通过 Image id 来使用
[root@localhost ~]# docker commit -a "W<[email protected]>" -m "Added net-tools" mycentos
十六、导入/导出容器
16.1 导出容器export
docker export -o centos7.tar mycentos
16.2 导入容器import
[root@localhost ~]# docker import centos7.tar impcentos:7
十七、docker system命令集
#查看docker磁盘占用空间,加-v可以查看更详细信息
docker system df
docker system df -v
#查看 docker 发生过的事件,--since 指定日期
docker system events --since="2024-07-01"
#查看docker详情
docker system info
删除docker中的无用数据
#docker system prune 命令用于删除 docker 中的无用数据,这些无用数据包含已经停止的
容器、没有任何连接容器的网络、悬空镜像,及悬空镜像的构建缓存。
docker system prune
十八、容器删除命令
docker rmi删除镜像,rm删除容器,注意区分。
#容器删除
docker rm
#强制删除
docker rm -f
#镜像删除
docker rmi
#镜像强制删除
docker rmi -f
十九、命令总结
19.1 export 与save命令
- export命令作用于容器,save用于镜像,导出结果都为tar文件。
- export 一次只能对一个容器进行导出,save 一次可以对多个镜像进行导出
- export 仅导出容器内的文件系统快照,丢弃历史记录与元数据信息,save保存原镜像的完整记录。
19.2 import 与load 命令
- import 导入的是容器包,load 加载的是镜像包,但最终都会恢复为镜像。
- import 恢复为的镜像只包含当前镜像一层,load 恢复的镜像与原镜像的分层是完全相同。
- import 恢复的镜像就是新构建的镜像,与原镜像的 ImageID 不同;load 恢复的镜像与原镜像是同一个镜像,即 ImageID 相同。
- import 可以为导入的镜像指定<repository>与<tag>,load 加载的镜像不能指定<repository>与<tag>,与原镜像的相同。
19.3 export 与docker commit命令
- 相同点:export 与import 将容器变为一个镜像,commit也可以将容器变为镜像。
- 不同点:export与import恢复的镜像仅包含原镜像的一个分层,commit包含所有层镜像。
版权归原作者 DBA学习之路 所有, 如有侵权,请联系我们删除。