关于Docker的介绍不做过多说明,很多网站都有详细的说明,请自行补课。
推荐阅读 Docker —— 从入门到实践,这本书非常到位。
Centos7.2安装Docker
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r
命令查看你当前的内核版本
下面开始安装,如果有旧版本docker请先卸载
安装一些必要的软件工具(yum-util 提供yum-config-manager功能,后面两个是devicemapper驱动依赖的)
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加Docker软件源信息
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
查看所有仓库中所有docker版本,并选择特定版本安装
sudo yum list docker-ce --showduplicates | sort -r
安装Docker-ce
sudo yum -y install docker-ce
启动Docker,并将其加入到开机启动
sudo systemctl start docker
sudo systemctl enable docker
查看Docker是否安装(client和service两部分表示docker安装启动都成功了)
sudo docker version
下面运行hello-world
(由于本地没有hello-world这个镜像,所以去docker.io中pull了一个)
Docker常用命令
#搜索镜像
docker search <image> # 在docker index中搜索image
#下载镜像
docker pull <image> # 从docker registry server 中下拉image
#查看镜像
docker images: # 列出images
docker images -a # 列出所有的images(包含历史)
docker rmi <image ID>: # 删除一个或多个image
#使用镜像创建容器
docker run -i -t mysql
docker run -i -t mysql /bin/bash # 创建一个容器并运行,退出后容器关闭
#查看容器
docker ps :#列出当前所有正在运行的container
docker ps -l :#列出最近一次启动的container
docker ps -a :#列出所有的container(包含历史,即运行过的container)
docker ps -q :#列出最近一次运行的container ID
#再次启动容器
docker start/stop/restart <container> #:开启/停止/重启container
docker start [container_id] #:再次运行某个container (包括历史container)
docker attach [container_id] #:连接一个正在运行的container实例(即实例须为start状态,可以多个窗口同时attach 一个container实例)
docker start -i <container> #:启动一个container并进入交互模式(相当于先
docker run -i -t <image> /bin/bash #:使用image创建container并进入交互模式,/bin/bash
docker run -i -t -d -p <host_port:contain_port> #:映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port 映射到一个动态端口。
#注:使用start是启动已经创建过得container,使用run则通过image开启一个新的container。
#参数说明:
# -d:让容器在后台运行。
# -P:将容器内部使用的网络端口映射到我们使用的主机上。
#使用 exec 进入容器。进入后exit不会停止容器
# xxxx为容器id或者容器name
docker exec -it xxxx bash
#查看某个容器的控制台日志
docker logs --tail 50 --follow --timestamps xxxx
#删除容器
docker rm <container...> #:删除一个或多个container
docker rm `docker ps -a -q` #:删除所有的container
docker ps -a -q | xargs docker rm #:同上, 删除所有的container
Docker基本操作
# 查看image(-a表示显示所有包括停止的)
$ docker image ls
# 删除镜像xxx
$ docker image rm xxx
# 查看container (-a表示显示所有包括停止的)
$ docker container ls -a
# 新建并启动一个容器
$ docker run ubuntu:14.04 /bin/echo 'Hello world'
# 启动某个已经停止的容器
$ docker container start xxx
# 终止某个容器
$ docker container stop xxx
# 删除某个容器
$ docker container rm xxx
# 删除所有终止的容器
$ docker container prune
Example
启动mysql5.7
sudo docker run --name mysql-demo -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v ~/data/mysql:/var/lib/mysql -d mysql:5.7
参数说明
- --name 设置创建的容器名称
- -p 设置端口映射,前面是宿主机端口,后面是容器端口
- -e 设置容器软件参数
- -v 设置宿主机和容器之间的目录映射
- -d 后台运行
卸载Docker
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine