给主机配置好基本的yum源(推荐使用阿里云源)
docker-ce源可以在各大镜像站找到,例如
阿里云开源镜像站
清华大学开源镜像站
以下使用阿里云源做示范
安装完之后使用docker version
验证
//安装完之后是这样的
[root@wanf ~]# docker version
Client: Docker Engine - Community
Version: 24.0.7
API version: 1.43
Go version: go1.20.10
Git commit: afdd53b
Built: Thu Oct 26 09:09:18 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 24.0.7
API version: 1.43 (minimum version 1.12)
Go version: go1.20.10
Git commit: 311b9ff
Built: Thu Oct 26 09:08:20 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.24
GitCommit: 61f9fd88f79f081d64d6fa3bb1a0dc71ec870523
runc:
Version: 1.1.9
GitCommit: v1.1.9-0-gccaecfc
docker-init:
Version: 0.19.0
GitCommit: de40ad0
[root@wanf ~]#
建议注册一个docker账号之后再使用docker。docker官网
docker login //登录账号
docker logout //登出账号
docker info //查看docker概要信息
docker --help //查看docker总体帮助文档
docker 命令 --help //查看docker命令帮助文档
docker images //列出本地镜像
-a //列出所有本地镜像(含历史映像层)
-q //只显示镜像ID
docker images nginx //列出名为nginx的镜像
//示例
[root@wanf ~]# docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
lcwanf/nginx v10.2 021283c8eb95 4 months ago 187MB
//字段解释
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签版本号
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
docker search nginx //在官方仓库搜索名为nginx的镜像
docker search lcwanf //搜索用户lcwanf仓库里面的镜像
docker search --limit nu //只输出查到的前nu条记录
//示例一
[root@wanf ~]# docker search lcwanf
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
lcwanf/nginx 0
//示例二
[root@wanf ~]# docker search nginx --limit 3
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 19181 [OK]
unit Official build of NGINX Unit: Universal Web … 15 [OK]
nginxinc/nginx-unprivileged Unprivileged NGINX Dockerfiles 130
//字段解释
NAME:镜像名称
DISCRIPTION:镜像说明
STARTS:点赞数
OFFICAL:是否是官方认可的
AUTOMATED:是否自动构建
docker pull 镜像名字[:TAG] //拉取镜像(TAG:版本号)
//示例
[root@wanf ~]# docker pull lcwanf/nginx:v10.0
v10.0: Pulling from lcwanf/nginx
Digest: sha256:34882051719faa5b6ff57152a6bc57448d699170fca0bd7e14520d5dc18f0e36
Status: Downloaded newer image for lcwanf/nginx:v10.0
docker.io/lcwanf/nginx:v10.0
[root@wanf ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
lcwanf/nginx v10.0 021283c8eb95 4 months ago 187MB
docker rmi 镜像ID|镜像名 //删除一个本地镜像
docker rmi -f //强制删除
//示例
[root@wanf ~]# docker rmi lcwanf/nginx:v10.0
Untagged: lcwanf/nginx:v10.0
[root@wanf ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@wanf ~]#
Docker中的镜像分层,支持通过扩展现有镜像,创建新的镜像。我们进行扩展后提交到本地成为一个新的镜像
语法:docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
选项 | 默认值 | 描述 |
---|---|---|
-a | 作者信息 | |
-c | 将Dockerfile指令应用于创建的镜像 | |
-m | 提交消息 | |
-p | true | 提交期间暂停容器 |
docker build -t 新镜像名字:TAG . # 注意 TAG后面有个空格,有个点
example:
docker build -t centosjava8:1.5 .
一键创建,启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用参数:
--name=NAME #为容器指定名字为NAME,不使用的话系统自动为容器命名
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
也即启动交互式容器(前台有伪终端,等待交互,一般连用,即-it);
-P: 随机端口映射,大写P
-p: 指定端口映射,小写p
示例
[root@wanf ~]# docker run -d -p 8080:80 --name nginx22 -it 021283c8eb95
只能看到正在运行的容器
docker ps [OPTIONS]
常用参数:
-a :列出当前所有正在运行的容器+历史上运行过的 (在运行和未运行的容器都可以看到)
-l :显示最近创建的容器。
-n nu:显示最近nu个创建的容器。
-q :静默模式,只显示容器编号。
1.exit
run进去容器,exit退出,容器停止
2.ctrl+p+q
run进去容器,ctrl+p+q退出,容器不停止
1.docker exec -it 容器ID/容器名称 bashShell
2.docker attach 容器ID
//容器ID
docker exec -it 容器ID /bin/bash
docker attach 容器ID
示例:
[root@wanf ~]# docker exec -it fb4ed6905793 /bin/bash
root@fb4ed6905793:/# ls
bin docker-entrypoint.d home lib64 mnt root srv usr
boot docker-entrypoint.sh lib libx32 opt run sys var
dev etc lib32 media proc sbin tmp
root@fb4ed6905793:/#
----------------------------------------------------------
//容器名称
docker exec -it nginx /bin/bash
docker attach nginx
docker start 容器ID或者容器名 //启动容器
docker restart 容器ID或者容器名 //重启容器
docker stop 容器ID或者容器名 //停止容器
docker kill 容器ID或容器名 //强制停止容器
docker rm 容器ID //删除一个已经停止的容器
docker rm -f 容器ID //强制删除(正在运行的也可以删除)
docker logs 容器ID
docker top 容器ID
docker inspect 容器ID
docker cp 容器ID:容器内路径 目的主机路径
example:
#以ubuntu为例,我们在/tmp目录下通过touch a.txt创建a文本,将其复制到本机download目录下
docker cp 958443b97285:/tmp/a.txt /download
export 导出容器的内容留作为一个tar归档文件[对应import命令]
import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]
docker export 容器ID > 文件名.tar
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
#以ubuntu为例
docker export 958443b97285 > abcd.tar
cat abcd.tar | docker import - atguigu/ubuntu:3.7 # 注意 - 左右有分别有一个空格