docker
服务器版本
docker镜像
查看本地上的docker镜像
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。
# 查看本地上的docker镜像
docker images
- REPOSITORY: 表示镜像的仓库源
- TAG: 镜像的标签
- IMAGE ID: 镜像ID
- CREATED: 镜像创建时间
- SIZE: 镜像大小
从dockerhub获取新镜像
[root@izj6c5kvgj5i9e8z57mn7xz ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
eff15d958d66: Pull complete
1e5351450a59: Pull complete
2df63e6ce2be: Pull complete
9171c7ae368c: Pull complete
020f975acd28: Pull complete
266f639b35ad: Pull complete
Digest: sha256:097c3a0913d7e3a5b01b6c685a60c03632fc7a2b50bc8e35bcaa3691d788226e
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@izj6c5kvgj5i9e8z57mn7xz ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ea335eea17ab 9 days ago 141MB
mysql latest 0716d6ebcc1a 2 months ago 514MB
如果dockerhub有该镜像,则会从dockerhub上下载最新版本的镜像。
如果想要指定版本,只需要在后边加上:[版本号]
比如
docker pull ubuntu:jammy-20211029
如果想指定安装源,只需要添加参数--registry-mirror=[源地址]
搜索镜像
docker search httpd
删除镜像
docker rmi [IMAGE ID]
删除所有容器:
docker rmi $(docker images -q)
运行镜像
在下载完镜像后,可以通过docker run 运行镜像,运行镜像时候会产生一个容器。
更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 -d
参数来实现。
注: 容器是否会长久运行,是和 docker run
指定的命令有关,和 -d
参数无关。
使用 -d
参数启动后会返回一个唯一的 id,也可以通过 docker ps -a
命令来查看容器信息。如果不加 -a
则只会显示正在运行的容器。
docker run ubuntu
docker run 参数
docker run [可选参数] image
# 参数说明(部分)
--name="Name" 容器名字
-d 后台方式运行 (常用)
-it 使用交互方式运行,可以进入容器 (常用)
-p 暴露容器端口 -p 8080:8080 (前主机端口,后容器端口)
-p的用法比较多。
格式:
-p 主机端口:容器端口 (常用)
-p 容器端口
容器端口(不加-p)
-P 大P为随机指定容器端口
-v 挂载卷(数据持久化)
-net 容器的网络参数(常用!)
–net=bridge 这个是默认值,连接到默认的网桥。
–net=host 共享主机网络空间,可以像普通进程一样进行通信
–net=container:NAME_or_ID 让 Docker 和已存在的容器共享 IP 地址和端口等网络资源,两者进程可以直接通过 lo 环回接口通信。
–net=none 让 Docker 将新容器放到隔离的网络栈中,但是不进行网络配置。之后,用户可以自己进行配置
# 使用docker创建一个ubuntu镜像,并进入容器交互运行。
[root@izj6c5kvgj5i9e8z57mn7xz ~]# docker run -it ubuntu /bin/bash
root@5d2ba7787309:/# uname -a
Linux 5d2ba7787309 3.10.0-1160.41.1.el7.x86_64 #1 SMP Tue Aug 31 14:52:47 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
root@5d2ba7787309:/#
# 此处还有点区别,使用-it运行容器,需要在image id后边加上要进入的入口文件
# 注意,此时已经进入到容器内的ubuntu系统。
# 如果想要退出容器,可以使用exit命令(使用后容器会停止)。
# 如果想不停止退出,可以按 ctrl+p ctrl+q
如果不加-d
参数,在使用exit命令后,容器会自动停止。
root@5d2ba7787309:/# exit
exit
[root@izj6c5kvgj5i9e8z57mn7xz ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5d2ba7787309 ubuntu "/bin/bash" 2 minutes ago Exited (0) 6 seconds ago agitated_proskuriakova
[root@izj6c5kvgj5i9e8z57mn7xz ~]#
# 可以看到,ubuntu容器已经停止了(Exited (0) 6 seconds ago)。
在使用ctrl+p ctrl+q命令后,容器会退出,但不会停止。
查看容器
通常使用 docker ps -a
# 查看正在运行的容器
docker ps
# 查看当前所有镜像(包括已退出的)
docker ps -a
# 只查看容器id
docker ps -q
[root@izj6c5kvgj5i9e8z57mn7xz ~]# docker ps -q
ccf31a10f64d
[root@izj6c5kvgj5i9e8z57mn7xz ~]#
如果想要查看所有运行过的镜像,可以加上 -a
参数
进入容器
docker exec : 在运行的容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS说明:
- -d : 分离模式: 在后台运行
- -i : 即使没有附加也保持STDIN 打开
- -t : 分配一个伪终端
以ubntu镜像为例:
[root@izj6c5kvgj5i9e8z57mn7xz ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ccf31a10f64d ubuntu "bash" 53 seconds ago Up 53 seconds sleepy_ellis
[root@izj6c5kvgj5i9e8z57mn7xz ~]# docker exec -it ccf31a10f64d /bin/bash
root@ccf31a10f64d:/#
停止镜像
docker stop [CONTAINER ID]
删除镜像
删除镜像必须要保证容器已经停止。
docker rm [CONTAINER ID]
如果想批量删除容器
docker rm $(docker ps -aq)
评论区