老听说人docker,这两天就来试试看,发现最终用起来和虚拟机vps很像,肤浅认为对硬件和系统各个层面控制不同。
前提条件
在root权限下,通过 uname -r 命令查看你当前的内核版本
Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 Ubuntu 版本是否支持 Docker。
apt-get update apt-get install -y docker.io
//docker.io ismaintained by Ubuntu
//docker-engine ismaintained by Docker
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。
yum -y install docker-io
容器常用命令
service docker start //启动docker服务
service docker stop //停止docker服务
service docker restart //重启docker服务
docker info 或者 docker version 查看安装的信息
二、 docker常用命令
1、docker inspect [容器名orID]/[镜像名orID] //检查镜像或者容器的参数,默认返回 JSON 格式
//获得容器IP docker inspect cocky_hermann | grep IPAddress //将容器的8000端口映射到docker主机的8001端口 iptables -t nat -A DOCKER -p tcp --dport 8080 -j DNAT --to-destination 172.17.0.2:8000
2、docker logs [容器名orID] //获取容器运行时的输出日志
-f 跟踪容器日志的最近更新;
-t 显示容器日志的时间戳;
–tail=”10” 仅列出最新10条容器日志。
3、查看容器目录
docker ps //查看正在运行的容器 docker ps -a //查看所有的容器,包括已经停止的
4.查看镜像目录
docker images
5、启动、杀死、停止、删除(删除容器必须先停止,再执行删除)容器
docker start [容器名orID] docker kill [容器名orID] docker stop [容器名orID] docker rm [容器名orID]
6、删除镜像(需要先删除容器,再删镜像)
docker rmi [镜像名orID]
//强制删除 docker rmi -f <imageID> //删除所有none镜像 docker rmi $(docker images | grep "none" | awk '{print $3}') //删除所有镜像 docker rmi $(docker images -q)
7、查看一个镜像的历史
docker history [镜像名orID]
8、启动容器
- 启动容器并启动bash(交互方式):
docker run -i -t [镜像名orID] /bin/bash
- 启动容器以后台方式运行(更通用的方式):
docker run -d -it [镜像名orID]
9、附着到容器
- 附着到正在运行的容器:
docker attach [容器名orID]
- 进入正在运行的容器内部,同时运行bash(比attach更好用):
docker exec -t -i [容器名orID] /bin/bash
10、从dockerhub检索image
docker search [镜像名]
11、拉取、下载镜像
docker pull [镜像名]
这里可能很慢,因为镜像是在国外。使用镜像加速就可以了。
在/etc/docker/daemon.json 文件并添加上 registry-mirrors 键值。如果没有文件,则新建一个。键值如下:
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
12、发布镜像
docker push <namespace>/<image name>
13、查看docker基础信息
- 查看docker版本:
docker version
- 查看docker系统的信息
docker info
14、构建docker镜像
- 通过commit提交改变构建镜像
docker commit [改变了的容器的ID] [REPOSITORY:TAG]
如:docker commit 6282cee20e5b anumbrella/ubuntu
当然还可以更详细一点:
docker commit -m=”add ssh” –author=”anumbrella” 6282cee20e5b anumbrella/ubuntu:ssh - 通过Dockerfile来构建镜像
docker build -t [REPOSITORY:TAG] -f [Dockerfile文件] [Dockerfile目录]
如: docker build -t anumbrella/ubuntu:ssh -f /docker/ubuntu/Dockerfile /docker/ubuntu
15、保存、加载docker镜像
保存镜像
docker save [OPTIONS] IMAGE [IMAGE...]
将docker的镜像打包保存下载下来。
如:
docker save -o myUbuntu.zip anumbrella/ubuntu:ssh
也可以使用
docker save anumbrella/ubuntu:ssh>myUbuntu.zip
加载镜像
docker load [OPTIONS] IMAGE [IMAGE...]
如:
docker load -i myUbuntu.zip
也可以使用
docker load < myUbuntu.zip
//打包镜像 docker save -o python-achievements-image.tar.gz <imageName> //加载镜像 docker load -i python-achievements-image.tar.gz
docker hub
//登录docker hub,输入用户名userName密码登录 docker login //退出 docker logout //命名镜像 docker tag <imageName> <userName>/<imageName> //发布镜像,在docker hub创建仓库imageName //构建镜像。将某个容器提交到本地仓库。无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分 docker commit <containerId> <userName>/<imageName> //将本地仓库推送到远程仓库 docker push <userName/imageName> //发布镜像后,镜像保存在自己的用户名下,根据用户名可查询所有镜像,然后pull相应的镜像 docker search coldchains NAME DESCRIPTION STARS OFFICIAL AUTOMATED coldchains/python_achievements 0 coldchains/python-mysql 0
在容器中的操作
//退出容器并关闭 exit //退出容器不关闭 control+P+Q