docker是什么
docker是一个开源的应用容器引擎,能够允许开发者将其部署的代码打包成镜像,并允许用户将其部署到自己的设备,比如Windows、linux或者虚拟环境中,在这个容器中所部署的镜像是沙箱机制,对一个镜像操作理论上不会影响其他板块的镜像。
萌萌哒的docker图标
按照我的理解,docker是一个大盒子,盒子里面用木板划分为几个小块,每个小块里面可以放不同口味的巧克力,在控制变量情况下,吃了白巧克力并不会影响其他块的巧克力(除了再偷偷把块2的巧克力也吃了~)
块1 | 块2 | 块3 |
---|---|---|
白巧克力 | 黑巧克力 | 夹心巧克力 |
巧克力吃完了怎么办?哈哈,这个问题不用担心。因为这个盒子有专门的巧克力厂(仓库respository),每位生产者(作者author)会把生产好的巧克力放到这个工厂,当盒子发送请求添加巧克力需求时工厂就会把做好的巧克力发到到盒子。
docker部署范围
根据我两个多月不成熟的学习和体验,docker主要有以下几种环境可部署:
- 实体机(windows、linux、mac、安卓temmux终端)
- 虚拟机(window、Linux、ubuntu)
- 群晖
- …
docker常用命令
安装命令
# yum 包更新
yum update
# 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置yum源
##官方源```
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装docker,出现输入的界面都按 y
yum install -y docker-ce
# 查看docker版本,验证是否验证成功
docker -v
> #比如输入命令后出现:Docker version 20.10.13, build a224086
# 启动docker
systemctl start docker
# 允许开机自启
systemctl enable docker
容器命令
#查看当前运行容器
docker ps a
# 查看所有正在运行容器
docker ps -a
# 容器进入
docker exec -it 容器名 bash
docker命令
常规命令
启动、停止、重启、状态、开机启动 docker
systemctl <start | stop | restart |status | enable> docker
查看docker所占空间情况
查看镜像/容器/数据卷所占的空间
[root@VM-16-4-centos ~]
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 16 7 7.295GB 3.918GB (53%)
Containers 9 0 389.1MB 389.1MB (100%)
Local Volumes 4 3 653.7MB 0B (0%)
Build Cache 0 0 0B 0B
信息类
docker info
docker --help
docker 具体命令 --help
镜像命令
查看本地镜像
OPTIONS参数
参数 | 解释 |
---|---|
-a | 列出本地所有的镜像(含历史映像层) |
-q | 只显示镜像ID |
搜索镜像
docker search [OPTIONS] <image_name>
OPTIONS参数
参数 | 解释 |
---|---|
--limit | 列出N个镜像 |
获取镜像
不跟tag参数默认下载最新版本
docker pull <image_name>:tag
删除镜像
1、删除单个镜像
docker rmi -f <image_id>
2、删除多个镜像
docker rmi -f <image_id> <image_id> ……
3、删除全部
docker rmi -f $(docker images -qa)
容器命令
新建和启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS
参数 | 解释 |
---|---|
--name | 为容器指定一个名称 |
-d | 后台运行容器并返回容器ID,也即启动守护式容器(后台运行) |
-i | 交互模式运行容器 |
-t | 为容器重新分配一个伪输入终端 |
-P | 随机端口映射,大写P |
-p | 指定端口映射,小写p |
🌰🌰 端口映射
参数 | 解释 |
---|---|
-p hostPort:containerPort | 映射主机端口到容器端口 |
-p ip:hostPort:containerPort | 指定主机的ip和端口映射到容器端口 |
-p ip::containerPort | 随机映射主机端口到容器端口 |
-p hostPort:containerPort:udp | 指定映射端口的协议 |
-p 80:80 -p 443:443 | 指定多个映射 |
🌰🌰 交互模式
docker run -it centos /bin/bash
- -i: 交互式操作
- -t: 终端
- centos : centos 镜像
- /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
- 要退出终端,直接输入 exit:
查看容器
参数 | 解释 |
---|---|
-a | 列出当前所有正在运行的容器+历史上运行过的 |
-n | 显示最近创建的容器 |
-l | 显示最近n个创建的容器 |
-q | 静默模式,只显示容器编号 |
不跟OPTIONS参数,默认是查看正在运行的容器
退出容器
- exit:run进去容器,exit退出,容器停止
- ctrl+p+q:run进去容器,ctrl+p+q退出,容器不停止
启动容器
docker start <container_ID>|<container_name>
重启容器
docker restart <container_ID>|<container_name>
停止容器
1、正常停止
docker stop <container_id>|<container_name>
2、强制停止
docker kill <container_id>|<container_name>
删除容器
1、删除一个容器
docker rm <container_id>
2、删除多个容器
docker rm -f $(docker ps -a -q)
或者
docker ps -a -q | xargs docker rm
查看日志
docker logs <container_id>
查看容器内进程
docker top <container_id>
查看容器元信息
docker inspect <container_id>
拷贝文件
1、从容器到主机
docker cp <container_id>:path host_path
2、从主机到容器
docker cp host_path <container_id>:path
导入和导出容器
1、导出(打包容器):export
docker export <container_id> > package_name.tar.gz
2、import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
总结
attach Attach to a running container
build Build an image from a Dockerfile
commit Create a new image from a container changes
cp Copy files/folders from the containers filesystem to the host path
create Create a new container
diff Inspect changes on a container's filesystem
events Get real time events from the server
exec Run a command in an existing container
export Stream the contents of a container as a tar archive
history Show the history of an image
images List images
import Create a new filesystem image from the contents of a tarball
info Display system-wide information
inspect Return low-level information on a container
kill Kill a running container
load Load an image from a tar archive
login Register or Login to the docker registry server
logout Log out from a Docker registry server
logs Fetch the logs of a container
port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT
pause Pause all processes within a container
ps List containers
pull Pull an image or a repository from the docker registry server
push Push an image or a repository to the docker registry server
restart Restart a running container
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save an image to a tar archive
search Search for an image on the Docker Hub
start Start a stopped containers
stop Stop a running containers
tag Tag an image into a repository
top Lookup the running processes of a container
unpause Unpause a paused container
version Show the docker version information
wait Block until a container stops, then print its exit code
评论区