Docker是一个开源的应用容器引擎,使用Go语言开发。基于LXC(Linux Container)内核虚拟化技术实现,提供一系列更强的功能,比如镜像、Dockerfile等;
Docker理念是将应用及依赖包打包到一个可移植的容器中,可发布到任意Linux发行版Docker引擎上。使用沙箱机制运行程序,程序之间相互隔离;
Docker三要素:容器、镜像、仓库
Docker官网: https://hub.docker.com/
一、Docker基本命令
- 启动Docker:
systemctl start docker
- 停止Docker:
systemctl stop docker
- 重启Docker:
systemctl restart docker
- 开机启动Docker:
systemctl enable docker
- 查看Docker信息:
docker info
- 查看Docker帮助文档:
docker --help
- 查看Docker版本信息:
docker version
二、镜像命令
- 查看所有镜像:
docker images
- 搜索镜像:
docker search tomcat (镜像)
- 下载镜像:
docker pull tomcat:5.0 (镜像:版本)
- 删除镜像:
项目 | 命令行 |
---|---|
删除 | docker rmi tomcat:5.0 |
删除多个 | docker rmi mysql:5.7 ngnix:latest |
强制删除 | docker rmi -f mysql:5.7 |
全部删除 | docker rmi -f $(docker images -qa) |
三、容器命令
(1)基本命令
- 创建并启动容器:
docker run --name myTomcat01 tomcat:latest
- 查询容器:
项目 | 命令行 |
---|---|
查询正在运行的容器 | docker ps |
查询所有的容器 | docker ps -a |
查询停止的容器 | docker ps -f status=exited |
查询最近创建的2个容器 | docker ps -n 2 |
- 退出容器:
exit
- 进入容器:
docker attach 容器ID/名称
- 启动容器:
docker start 容器ID/名称
- 重启容器:
docker restart 容器ID/名称
- 停止容器:
docker stop 容器ID/名称
- 删除容器:
项目 | 命令行 |
---|---|
删除容器 | docker rm 容器Id |
强制删除 | docker rm -f 容器Id |
删除多个 | docker rm -f 容器ID1 容器ID2 |
删除所有 | docker rm -f $(docker ps -qa) |
(2)高级命令
- 守护式创建并启动容器:
docker run -di --name myTomcat01 镜像ID
- 查看容器日志:
docker logs 容器ID
- 端口映射:
docker run -d -p 8888:8080 tomcat (宿主机端口:容器端口)
四、定制镜像
1、 提交容器为镜像
命令: docker commit -a=‘作者’ -m=‘备注’ 容器ID 镜像新名字
2、推送镜像到hub服务器
(1)登录: docker login
(2)推送: docker push 镜像名字:版本号
3、推送镜像到阿里云
(1)https://cr.console.aliyun.com/ 创建命名空间、创建镜像仓库
(2)按照操作
1. 登录阿里云Docker Registry
$ docker login --username=junn****liang registry.cn-beijing.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。您可以在访问凭证页面修改凭证密码。
2. 从Registry中拉取镜像
$ docker pull registry.cn-beijing.aliyuncs.com/allen900507/tomcat:[镜像版本号]
3. 将镜像推送到Registry
$ docker login --username=junn****liang registry.cn-beijing.aliyuncs.com
$ docker tag [ImageId] registry.cn-beijing.aliyuncs.com/allen900507/tomcat:[镜像版本号]
$ docker push registry.cn-beijing.aliyuncs.com/allen900507/tomcat:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
4. 示例
使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
registry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB
$ docker tag 37bb9c63c8b2 registry-vpc.cn-beijing.aliyuncs.com/acs/agent:0.7-dfb6816
使用 "docker push" 命令将该镜像推送至远程。
$ docker push registry-vpc.cn-beijing.aliyuncs.com/acs/agent:0.7-dfb6816
五、容器目录挂载
命令: docker run -it -v /宿主机目录:/容器目录 镜像名
挂牌目录只读: docker run -it -v /宿主机目录:/容器目录:ro 镜像名
六、备份和迁移
命令: docker save -o 备份镜像的名称 原镜像名称:tag版本
还原:docker load -i 备份镜像的名称
七、DockerFile
编写DockerFile
构建 docker build -f myTomcatDockerFile -t mytomcat:1.5 .
运行 docker run -it p 8080:8080 镜像ID
VOLUMN[’/home/v1’.’/home/v2’]
八、私有仓库
1、拉取私有仓库镜像 docker pull registry
2、启动私有仓库容器 docker run -di --name=myRegistry -p 5000:5000 registry
3、测试 http://ip:5000/v2/_catalog
4、标记镜像为私有仓库镜像: docker tag tomcat:7 192.168.1.112:5000/mytomcat7
5、上传镜像到私有仓库: docker push 192.168.1.112:5000/mytomcat7