什么是Docker
Docker是基于Go 语言实现的开源容器项目,诞生于2013年年初,最初发起者是 dotCloud 公司。Docker 自开源后受到广泛的关注和讨论,目前已有多个相关项目(包括 Docker 三剑客、Kubernetes 等),逐渐形成了围绕 Docker 容器的生态体系。
Docker 的构想是要实现“Build, Ship and Run Any App, Anywhere”, 既通过对应用的封装、分发、部署、运行生命周期进行管理,达到应用组件“一次封装,到处运行”的目的。这里的应用组件,既可以是一个 Web 应用、一个编译环境,也可以是一套数据库平台服务,甚至是一个操作系统或集群。
Docker安装
Linux系统(以ubuntu 16.04为例)
# Update the apt package index:
sudo apt-get update
# Install packages to allow apt to use a repository over HTTPS:
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
# Add Docker’s official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-
# Verify that Docker CE is installed correctly by running the hello-world image
sudo docker run hello-world
MAC OS X系统
- 去官网下载最新版本安装即可,点击这里
Windows系统
- 这里仅以Window旗舰版和专业版为例,其他版本使用Docker比较麻烦
- 下载最新版本EXE文件安装即可,点击这里
从Docker Hub拉取镜像
# 拉取ubuntu镜像
sudo docker pull ubuntu
注意:Linux下使用Docker需要root权限,若不想每次使用的时候都加sudo,请参看这里
运行镜像
- 检查镜像是否拉取成功
sudo docker images
- 如果所列出来的有ubuntu镜像,那说明已经成功,接下来就可以run啦
sudo docker run -it ubuntu bash
- 现在我们已经成功打开了一个容器(在docker中打开的镜像成为容器),即ubuntu的终端,你可以像操作普通ubuntu镜像一样操作它。如果你对它进行了一些操作需要把它保存出来供别人使用,你需要使用commit命令
sudo docker commit CONTAINER_ID NEW_IMAGE_NAME
注意:CONTAINER_ID可以通过以下命令查询
sudo docker ps -a
- 打开已经存在的container
docker exec -it CONTAINER_ID /bin/bash
拷贝文件
- 拷贝主机文件到Docker container
sudo docker cp host_directory CONTAINER_ID:/path/to/directory
保存镜像到本地与加载本地镜像
# 保存到本地
sudo docker save your_image > your_image.tar
# 从本地加载
sudo docker load < your_image.tar
上传镜像
docker tag <existing-image> <hub-user>/<repo-name>[:<tag>]
docker push <hub-user>/<repo-name>:<tag>
清除冗余镜像
# 删除非启动container
docker rm $(docker ps -a | grep -v Up | awk '{print $1}')
# 删除冗余镜像
docker rmi $(docker images | grep \<none\> | awk '{print $3}')
# 删除所有镜像
docker rmi $(docker images | awk '{print $3}')
网友评论