1. 镜像
- 查找镜像
docker search nginx
- 拉取镜像
docker pull nginx
也可以指定版本
docker pull nginx:1.18.0
- 查看镜像
docker images
- 镜像详情
docker inspect nginx
- 删除镜像
docker rmi nginx
- 镜像标签
docker tag src_image[:tag] tar_image[:tag]
- 创建镜像
通常有三种方法可以创建容器镜像,如:基于已有的镜像容器创建;基于本地镜像导入;基于Dockerfile创建(建议使用)
commit是基于一个已存在的容器进行创建镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
选项说明:
-a, --author string 作者信息,如:"John Hannibal Smith <hannibal@a-team.com>"
-m, --message string 提交信息
- 导出镜像
docker save -o nginx.tar nginx
选项说明:
-o, --output string 指定导出文件
- 导入镜像
docker load -i nginx.tar
选项说明:
-i, --input string 指定导入的归档文件
- 上传镜像
首先要给镜像打一个标签
docker tag nginx:1.18.0 local.mirror.com/nginx:1.18.0
然后再将镜像上传到仓库
docker push local.mirror.com/nginx:1.18.0
2. 容器
- 创建容器
docker create -it --name myngx nginx:1.18
- 启动容器
docker start myngx
- 停止容器
docker stop myngx
- 重启容器
docker restart myngx
- 运行容器
docker run
等同于docker create
和docker start
docker run -d -p80:80 --name myngx nginx:1.18
常用选项:
-d 守护进程
-i 以交互模式运行容器,通常与 -t 同时使用
-t 为容器重新分配一个伪输入终端,通常与-i同时使用
-P 随机端口映射,容器内部端口随机映射到主机的端口
-p 指定端口映射,格式为:主机(宿主)端口:容器端口
--name="myngx" 为容器指定一个名称
--dns 8.8.8.8 指定容器使用的DNS服务器,默认和宿主一致
--dns-search example.com 指定容器DNS搜索域名,默认和宿主一致
-h "hostname": 指定容器的hostname
-e MYSQL_ROOT_PASSWORD="toor3412" 设置环境变量
--env-file=[] 从指定文件读入环境变量
--cpuset="0-2" or --cpuset="0,1,2" 绑定容器到指定CPU运行
-m 设置容器使用内存最大值
--net="bridge" 指定容器的网络连接类型,支持bridge、host、none、container四种类型
--link=[] 添加链接到另一个容器
--expose=[] 开放一个端口或一组端口
--volume , -v 绑定一个卷
- 进入容器
docker exec -it myngx bash
- 删除容器
docker rm myngx -f # -f 表示强制删除一个正在运行的容器
- 查看容器
docker ps -a # -a 表示查看所有容器,包括退出的容器
- 查看容器状态
# docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
15081e87b563 gifted_dhawan 0.00% 1.391MiB / 1.936GiB 0.07% 648B / 0B 0B / 0B 2
dc3ba5ed2ab8 myngx 0.00% 1.383MiB / 1.936GiB 0.07% 1.09kB / 0B 0B / 0B 2
- 查看进程
# docker top myngx
UID PID PPID C STIME TTY TIME CMD
root 120764 120742 0 12:49 pts/0 00:00:00 nginx: master process nginx -g daemon off;
101 120814 120764 0 12:49 pts/0 00:00:00 nginx: worker process
- 查看日志
docker logs myngx -f # -f 表示实时刷新,类似tail -f
3. 仓库
官方镜像仓库地址:https://hub.docker.com
- 登录
输入账号/密码登录成功之后,一般会在~/.docker/config.json保存登录认证信息
docker login
- 登出
docker logout
- 私有仓库
实现私有仓库的方式有很多,通常有:registry、harbor、nexus等,本文以registry为例。
# 运行registry仓库
docker run -d -p 5000:5000 --restart=always --name registry registry
# 打标签
docker tag nginx:1.18 127.0.0.1:5000/nginx:1.18
# 上传
docker push 127.0.0.1:5000/nginx:1.18
# API示例
# curl 127.0.0.1:5000/v2/_catalog
{"repositories":["nginx"]}