关于镜像的命令
从远端仓库拉取镜像
docker pull [仓库的URL]/[名称空间]/[仓库的名称]:[版本号]
eg:
docker pull redis
默认:docker pull docker.io/library/redis:latest
完整命令:
docker pull registry.cn-hangzhou.aliyuncs.com/alvinos/python:v5
查询远端仓库镜像
docker search redis --limit 3 # --limit 3 只获取3条
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 8792 [OK]
bitnami/redis Bitnami Redis Docker Image 168 [OK]
rediscommander/redis-commander Alpine image for redis-commander - Redis man… 47 [OK]
NAME :镜像名称
DESCRIPTION : 简介
STARS : 收藏个数
OFFICIAL : 是否是官方镜像
AUTOMATED : 是否是自构建的镜像
-f : 过滤查询
stars=150 : 查询收藏数大于150的镜像
--no-trunc : 不截断查询
从本机上传镜像到远端仓库
第一步:先登录
docker login [参数] [仓库URL]
docker login --username=yangyang091022 registry.cn-hangzhou.aliyuncs.com
第二步:打标签
docker tag [原镜像名称]:[版本号] [新的名称]:[新版本号]
docker tag redis:latest registry.cn-hangzhou.aliyuncs.com/alvinos/redis:v1
第三步:推送
docker push [镜像名称]
docker push registry.cn-hangzhou.aliyuncs.com/alvinos/redis:v1
在本机的镜像操作
查看镜像命令:
root@localhost yum.repos.d]# docker images
格式:
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 74d107221092 12 days ago 104MB
代表意思:
REPOSITORY : 镜像名称
TAG :镜像版本号
IMAGE ID : 镜像ID
CREATED : 创建时间到现在的时间
SIZE : 指镜像大小
删除镜像命令:
docker rmi [镜像ID|[镜像名称:版本号]] #i代表images
参数:
-f:代表强制删除,如果该镜像正在使用中,强制删除,实际上是删除标签。
清理镜像
docker image prune [参数]
-a : 清理所有的(未被使用)镜像
# 保存容器为镜像
docker commit [容器ID] [参数]
# 保存容器为镜像
docker commit [容器ID] [参数]
-a : 执行维护者
-m : 指定简介
-p : 当保存时,容器停止运行
#查看镜像的详细信息
docker inspect [参数] [镜像名称|镜像ID]
docker容器中至少有一个应用程序运行在前台
# 提交镜像
docker commit [参数] [容器ID|容器名称]
参数:
-a : 作者
-m : 描述
-p : 当保存镜像时,暂停容器运行
有关于容器的命令
## 创建容器
docker run [参数] [镜像名称] [命令]
特点:
①:检查本地是否有所需镜像(如果没有,立即去相应的镜像仓库下载)
②:根据参数启动
参数:
-d : 以守护进程的方式运行一个容器
docker run -d nginx:1.19.5
--name : 指定一个容器的名称(将名称加入到Docker DNS当中)
docker run --name nginx -d nginx:1.19.5
-p(小写) : 指定固定端口映射[宿主主机端口号:容器内部端口号]
docker run -d -p 8099:80 nginx:1.19.5
-P(大写) : 指定随机端口映射
docker run -d -P nginx:1.19.5
-v : 挂载存储卷
docker run -d -v [宿主主机的目录]:[容器内的目录] [镜像名称] [启动命令]
--rm : 当一个容器的生命周期结束时,立即删除该容器
docker run -d --rm [镜像名称或ID]
-e : 在容器内设置一个环境变量
docker run -d -e NGINX_VERSION=1.19.5000 nginx:1.19.5
docker run -d -P -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
-i : 打开标准输出
-t : 创建一个伪终端
docker run -it centos bash
# 查看容器列表
docker ps (默认查询的是当前系统正在运行的容器)
-a : 显示搜索的容器(包括已停止的容器)
-q : 只显示容器ID
# 进入容器
## attach
1、没有提供可执行命令的地方
2、当attach结束时,容器也跟着结束了
创建一个管道,链接上容器内的pid=1哪个进程,当attach窗口结束时,容器随即结束器生命周期
docker attach [容器ID|容器名称]
## exec : 在宿主主机上通过exec的方式在容器内执行某个命令
docker exec [参数] [容器id | 容器名称] [命令]
docker exec -it pedantic_murdock bash
-i : 打开标准输出
-t : 创建一个伪终端
3、nsenter
创建一个管道,链接容器
4.ssh
# 导出容器为镜像[export]
docker export [容器ID|容器名称] > [压缩包名称]
docker export nginx_name > nginx.tar
# 导入镜像[import]
docker import [压缩包名称] 镜像名称(自定义)
docker import nginx.tar test/nginx:v1
# 导入镜像
docker load < [镜像压缩包]
docker load -i [镜像压缩包]
# 导出镜像为镜像压缩包(save)
docker save [镜像id | 镜像名称] > [压缩包名称]
docker save test/nginx:v2 > test_nginx.tar
参数:
-o : 指定在一个压缩包内保存多个镜像
# 导出容器为镜像[export]
docker export [容器ID|容器名称] > [压缩包名称]
docker export nginx_name > nginx.tar
save和load 与 export和import 区别?
1、save保存比较完整,export仅仅保存镜像。
2、save保存的体积大于export保存的体积
3、import可以重命名,load不能重命名
4、save可以保存多个镜像,export只能保存一个容器。
# 查看容器日志
docker logs [容器ID|容器名称]
# 停止容器
docker stop [容器ID|容器名称]
docker复制文件以及网络模式
复制文件 1、由宿主主机复制到容器内部 docker cp [宿主主机文件路径] [容器ID]:[容器内部路径] 2、由容器内部复制到宿主主机 docker cp [容器ID]:[容器内部路径] [宿主主机文件路径]
从主机上传文件到虚拟机,需要安装
yum install -y lrzsz
有关于网桥的命令
实现原理: 创建一个统一网络(交换机),为与其相连的容器提供网络转发功能
docker network [参数]
## 查看系统网桥
docker network ls
## 创建网桥
docker network create [网桥的名称]
## 查看网桥的详细信息
docker network inspect [网桥名称]
[root@localhost ~]# docker network inspect oldboy
[
{
"Name": "oldboy",
"Id": "617ba09862ae61d1385c1c9af517d3d803f19e965cd4bce5a5655234c8d1bf6e",
"Created": "2020-12-03T08:58:43.354251604+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
## 删除网桥
docker network rm [网桥名称|ID]
## 清理网桥
docker network prune
构建镜像
docker build [参数] [自定义镜像名称] [dockerfile] -t : 指定镜像名称 -f : 指定Dockerfile路径 ## FROM 指定基础镜像(作为构建新镜像时提供一个基础环境) FROM [镜像名称]:[版本号] ## RUN 构建镜像时在镜像中执行命令 RUN [Linux 命令] ## ADD 将本地文件复制到镜像中 ADD 宿主主机文件路径 镜像相对应的文件路径 ## CMD 指定容器启动时默认执行的命令 CMD [容器启动时在容器内执行的命令] 1、指定基础镜像 FROM python:3.6.12
2、安装django
RUN pip3 install django=2.2.2 -i https://pypi.douban.com/simple/
RUN django-admin startproject app
RUN cd /app && django-admin startapp docker
3、添加django源码包至镜像内
#ADD day91 /root/
4、设置启动命令
CMD cd /app && python3 manage.py runserver 0.0.0.0:8000
安装nginx
1、yum install yum-utils -y 2、touch /etc/yum.repos.d/nginx.repo 3、vim /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true 4、生成yum缓存:yum makecache 5、安装nginx: yum install nginx -y 6、配置代理 nginx -t : 测试配置文件 nginx -g 'daemon off;' : 在前台启动nginx
docker重启
systemctl restart docker