先来一波菜鸟教程

先大概说一下什么是docker:
docker是虚拟机的替代方案,可以使得应用在不同的环境下都能跑得起来
其内部的方法可以总括的说成:
开发者开发应用,然后将应用和环境都打包为镜像,然后将镜像上传到docker镜像仓库里。使用者通过docker镜像仓库或者其他渠道获得镜像后使用镜像运行命令运行镜像,运行的方式是将镜像放在容器中运行。

docker服务相关

systemctl start docker   # 启动Docker服务
systemctl stop docker    # 停止Docker服务
systemctl restart docker # 重启Docker服务 
systemctl status docker  # 查看Docker服务状态
systemctl enable docker  # 设置Docker开机启动
systemctl disable docker # 取消Docker开机启动

容器的生命周期

docker run -it [MIRROR NAME] /bin/bash: 
使用 MIRROR NAME 镜像启动一个容器,参数为以命令行模式进入该容器(/bin/bash是指在启动容器后在命令行中输入/bin/bash)

docker run -itd --name [CONTAINER NAME] [MIRROR NAME] /bin/bash: 
使用 MIRROR NAME 镜像启动一个容器,命名为CONTAINER NAME,参数为后台运行容器(d),加了 -d 参数默认不会进入容器

docker run -p [LOCAL_IP]:[LOCAL_PORT]:[CONTAINER PORT]/tcp [MIRROR NAME] bash: 
绑定容器的 [CONTAINER PORT] 端口,并将其映射到本地主机[LOCAL_IP]的 [LOCAL_PORT] 端口上。

docker run --name [CONTAINER PORT] -dit -p [LOCAL_PORT]:[CONTAINER PORT] --cap-add SYS_PTRACE  [MIRROR NAME]:[TAG]:
使用之前备份的[MIRROR NAME]:[TAG]创建新的[CONTAINER PORT]容器,将容器的 [CONTAINER PORT] 端口映射到本地主机[LOCAL_PORT]端口上 (--cap-add SYS_PTRACE好像是给权限的一个参数)
docker start [CONTAINER ID]: 启动已被停止的容器
docker stop [CONTAINER ID]: 停止运行中的容器
docker restart [CONTAINER ID]: 重启容器
docker ps -a: 查看所有容器
docker rm -f [CONTAINER ID]: 删除容器
docker container prune: 清理掉所有处于终止状态的容器。

在运行的容器中执行命令

docker exec -it  [CONTAINER ID] /bin/bash: 在容器中开启命令行

容器转镜像

docker commit [CONTAINER ID] [MIRROR NAME]:[TAG]  # 将 [CONTAINER ID] 容器保存为标签为 [TAG][MIRROR NAME] 镜像
docker rmi [MIRROR NAME]:[TAG]         # 删除标签为 [TAG][MIRROR NAME] 镜像

镜像和tar互转

把 uoj_back 这个容器导出为 uoj.tar 这个文件:
docker save -o uoj.tar uoj_back
运行下面的命令导入 uoj_back 镜像:
docker load --input uoj.tar

指定容器的架构

这个事情使用builderx可以解决,但是本地没有成功过,暂时不写。