Docker常用命令

关于镜像的命令

从远端仓库拉取镜像

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
原文地址:https://www.cnblogs.com/ltyc/p/14099730.html