Docker基础命令

ATTENTION:本文基于centos7安装和使用

一、安装Docker

1.1 配置镜像

首先我们要配下阿里云的yum源镜像 CentOS7使用阿里源安装最新版Docker-阿里云开发者社区,按照本文配置yum源

如果报以下错误

image-20241112213802880

则需要按照 CentOS 7 yum无法使用解决方法Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch= - 愚生浅末 - 博客园此文章进行操作

最后,使用 yum repolist 查看我们系统中的yum源

1.2 安装Docker

1
2
3
4
5
6
7
8
9
yum install docker-ce-3:20.10.5-3.el7.x86_64  docker-ce-cli-3:20.10.5-3.el7.x86_64 containerd.io

# 通过docker version 查看docker 版本
docker version

# 如果 上面步骤没有问题,输出如下图所示,那么我们就需要进行 启动 docker
systemctl start docker
# 配置开机启动
systemctl enable docker

image-20241112214238351

1.3 docker配置镜像加速

1
2
3
4
5
6
7
8
9
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
#以后docker下载直接从阿里云拉取相关镜像

image-20241112215005418

二、Docker 常用命令

2.1 Docker命令概览

image-20241112215234853

命令 作用
attach 绑定到运行中容器的标准输入,输出,以及错误流(这样似乎也能进入容器内容,但是一定小心,他们操作的就是控制台,控制台的退出命令会生效,比如redis,nginx...)
build 从一个Dockerfile 文件构建镜像
commit 把容器的改变提交创建一个新的镜像
cp 容器和本地文件系统间复制文件/文件夹
create 创建新容器,但并不启动(注意与docker run的区分)需要手动启动。start\stop
diff 检查容器里文件系统结构的更改【A:添加文件或目录D:文件或者目录删除C:文件或者目录更改】
events 获取服务器的实时事件
exec 在运行时的容器内运行命令
export 导出容器的文件系统为一个tar文件。commit是直接提交成镜像,export是导出成文件方便传输
history 显示镜像的历史
images 列出所有镜像
import 导入tar的内容创建一个镜像,再导入进来的镜像直接启动不了容器。/docker-entrypoint.sh nginx-g 'daemon off;'docker ps--no-trunc 看下之前的完整启动命令再用他
info 显示系统信息
inspect 获取docker对象的底层信息
kill 杀死一个或者多个容器
load 从tar文件加载镜像
login 登录Docker registry
logout 退出Docker registry
logs 获取容器日志;容器以前在前台控制台能输出的所有内容,都可以看到
pause 暂停一个或者多个容器
port 列出容器的端口映射
ps 列出所有容器
pull 从registry下载一个image或者repository
push 给registry推送一个image或者repository
rename 重命名一个容器
restart 重启一个或者多个容器
rm 移除一个或者多个容器
命令 作用
rmi 移除一个或者多个镜像
run 创建并启动容器
save 把一个或者多个镜像保存为tar文件
search 去docker hub寻找镜像
start 启动一个或者多个容器
stats 显示容器资源的实时使用状态
stop 停止一个或者多个容器
tag 给源镜像创建一个新的标签,变成新的镜像
top 显示正在运行容器的进程
unpause pause的反操作
update 更新一个或者多个docker容器配置
version Show the Docker version information
container 管理容器
image 管理镜像
network 管理网络
volume 管理卷
### 2.2 Docker命令

image-20241113204553327

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# 拉取alpine镜像
docker pull alpine

# 拉去指定版本的alpine镜像
docker pull alpine:3.20.3

# 查看所有镜像
docker images

# 查看所有运行的镜像
docker ps

# 列出所有已停止或运行的镜像
docker ps -a

# docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
# docker create [设置项] 镜像名 [启动] [启动参数...]
# docker create redis: 按照redis:latest镜像启动一个容器

# 是强制kill -9(直接拔电源);
docker kill
# 可以允许优雅停机(当前正在运行中的程序处理完所有事情后再停止)
docker stop

# docker create --name myredis -p 6379(主机的端口):6379(容器的端口) redis
# -p port1:port2 port1是必须唯一的,port2是没关系的。
docker create --name myredis -p 6379:6379 redis


# 同时将主机的 6379 和 8888 端口暴露出去
docker run --name myredis2 -p 6379:6379 -p 8888:6379 redis

# 默认是前台启动的,一般加上-d 让他后台悄悄启动, 虚拟机的很多端口绑定容器的一个端口是允许的
# docker run -d == docker create + docker start
docker run --name myredis2 -p 6379:6379 -p 8888:6379 redis

# docker logs <continerId or name>
docker logs o6e
docker logs mynginx

#启动了nginx;一个容器。docker 容器里面安装了nginx,要对nginx的所有修改都要进容器进容器: docker attach 绑定的是控制台. 可能导致容器停止。不要用这个
docker attach 06e

# 以root用户进入docker
docker exec -it -u 0:0 c3848a05d7ae /bin/bash
docker exec -it -u 0:0 --privileged mynginx4 /bin/bash
# 修改nginx默认欢迎页,挺好玩的
# cd /usr/share/nginx/html/
# echo "<h1>loltoulan<h1>" >> index.html

# 退出容器
exit 或者 ctrl+D

# docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- :把容器里面的复制出来
# docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH:把外部的复制进去
docker cp index.html mynginx4:/usr/share/nginx/html
docker cp mynginx4:/etc/nginx/nginx.conf nginx.conf

# docker commit
docker commit -a loltoulan -m "push a modi image" c3848a05d7ae mynginx:v4
# 删除游离镜像 没有 REPOSITORY 和 TAG 的镜像
docker image prune

docekr export
docker import


docker save