新手学习使用Docker,只需要一张图就可以记住常用的操作。
看图之前我们可能还需要知道其他一些概念。
什么是Docker
docker一种虚拟化技术。可以保证程序运行的环境一致,正如官网的一句话:debug your app, not your environment。
相比其他虚拟机,需要的资源更少。
常见概念
使用docker时常见的一些词汇翻译。
镜像
镜像是构建docker的基石,用户基于镜像来运行自己的容器。
容器
容器是基于镜像启动起来的,容器中可以部署我们想要的程序。
仓库
存放镜像的地方。
Dockerfile
基于基础镜像构建自己镜像的脚本,可以将自己的程序打入到基础镜像中并生成一个新的镜像。
docker-compose
docker官方提供的容器管理工具,用于多个容器互相配合的场景。
常用命令
到此就可以结合图来理解常见的docker操作了。
查看镜像:
docker images
查看容器:
docker ps [-a]
创建容器:
docker run
-i:运行容器
-t 容器启动后进入命令行
--name:容器名,唯一。
-v:目录映射关系,宿主机目录:容器目录。
-d:会创建一个守护式容器在后台运行。
-p:端口映射,宿主机端口:容器内端口。
-e:添加环境变量。
--link:将另一台docker容器映射过来。
例子:
docker run -d
-v /root/data:/data
-p 3306:3306
-p 8080:80
-e MYSQL_ROOT_PASSWORD=123456
--name myServer
Ubuntu:20.04
/bin/bash
进入容器的命令行:
docker exec -it 容器名or容器id /bin/bash
docker exec -it 容器名or容器id bash
在容器中退出容器:
exit
停止容器:
docker stop 容器名or容器id
启动容器:
docker start 容器名or容器id
拷贝文件:
从宿主机拷贝到容器:
docker cp 宿主机文件路径 容器名or容器id:容器内路径
从容器拷贝到宿主机:
docker cp 容器名or容器id:容器内路径 宿主机文件路径
查看容器数据(id,状态,ip等,也用于查看是否有EXPOSE端口,VOLUMES目录等):
docker inspect 容器名or容器id
直接查看某项数据,如ip地址:
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名or容器id
删除容器:
docker rm 容器名or容器id
删除镜像:
docker rmi 镜像名称:标签
拉取镜像:
docker pull 镜像名:标签
将容器保存为镜像:
docker commit 容器名 镜像名
将镜像导出为文件:
-o: output/输出
docker save -o 文件名 镜像名
docker save 镜像名 > 文件名
文件恢复为镜像:
-i: input/输入
docker load -i 文件名
docker load < 文件名
私服仓库相关操作
拉取私有仓库的镜像:
docker pull registry
启动容器:
docker run -id --ame=registry -p 5000:5000 registry
配置:
vi /etc/docker/deamon.json
添加配置:
{
"insecure-registries":["192.168.31.50:5000"]
}
重启docker:
systemctl restart docker
上传本地镜像到私有仓库:
docker tag 镜像名 私有仓库地址/镜像名称
docker push 私有仓库地址/镜像名称