一、Docker 安装卸载与启停
1、查看当前系统的内核版本
查看当前系统的内核版本是否高于 3.10
uname -r
2、安装Docker服务
使用镜像仓库进行安装,采用 yum 命令在线安装(即电脑需要联网)
root 用户运行以下命令:
- 卸载旧版本:(如果安装过旧版本的话)
Docker 的早期版本称为 docker 或 docker-engine 。如果安装了这些版本,请卸载它们及关联的依赖资源。
yum remove docker docker-common docker-selinux docker-engine
- 安装所需的软件包
yum-utils 提供了 yum-confifig-manager 实用程序,并且 devicemapper 存储驱动需要 device-mapper
persistent-data 和 lvm2 。
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置Docker的镜像仓库
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装最新版本的 Docker CE
yum install docker-ce
如果上面安装不成功,按照第3步卸载继续安装。
3、卸载Docker服务
- 卸载 Docker 软件包
yum remove docker-ce
- 删除镜像/容器等
rm -rf /var/lib/docker
4、启动与停止Docker服务
上面安装只是安装好, 但是没有启动Docker服务 。
systemctl 命令是系统服务管理器指令,它是 service 和 chkconfig 两个命令组合。
- 启动docker:
systemctl start docker
- 停止docker:
systemctl stop docker
- 重启docker:
systemctl restart docker
- 查看docker状态:
systemctl status docker
- 开机自动启动docker:
systemctl enable docker
- 查看docker版本
docker --version
- 帮助命令
docker --help
二、docker镜像操作
2.1、配置国内镜像加速器
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://w57n2hu2.mirror.aliyuncs.com"]
}
一定要重启docker服务,如果重启docker后无法加速,可以重新启动CentOS
重新加载该配置文件
systemctl daemon-reload
重启docker
systemctl restart docker
2.2、查看docker已安装的所有镜像
docker images
- 显示镜像ID
docker images -q
- 镜像保存位置在宿主机的/var/lib/docker 目录下
2.3、搜索镜像
docker search [OPTIONS] 镜像名称
例如:
docker search centos
- NAME:仓库名称
- DESCRIPTION:镜像描述
- STARS:关注度,反应一个镜像的受欢迎程度
- OFFICIAL:是否官方
- AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的
- -s 列出关注数大于指定值的镜像
docker search -s 100 mysql
- –no-trunc 显示完整的镜像描述DESCRIPTION
docker search --no-trunc centos
2.4、拉取镜像
docker pull 镜像名:标签名
或者
docker pull 镜像ID
2.5、删除单个镜像
docker rmi 镜像ID
2.6、删除所有镜像
docker rmi `docker images -q`
docker images -q获取所有镜像的id
三、docker容器的操作
3.1、查看容器
- 查看正在运行的容器
docker ps
- 查看所有容器
docker ps -a
- 查看最后一次运行的容器
docker ps –l
- 查看停止的容器
docker ps -f status=exited
3.2、创建启动容器
- 创建容器
docker run [OPTIONS] 镜像名:标签名
或者
docker run [OPTIONS] 标签名
创建容器 [OPTIONS] 常用的参数说明:
-i 表示交互式运行容器(就是创建容器后,马上会启动容器,并进入容器 ),通常与 -t 同时使用 。
-t 启动后会进入其容器命令行, 通常与 -i 同时使用; 加入 -it 两个参数后,容器创建就能登录进去。即
分配一个伪终端。
–name 为创建的容器指定一个名称 。
-d 创建一个守护式容器在后台运行,并返回容器ID;
这样创建容器后不会自动登录容器,如果加 -i 参数,创建后就会运行容器。
-v 表示目录映射, 格式为: -p 宿主机目录:容器目录
注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-p 表示端口映射,格式为: -p 宿主机端口:容器端口
- 创建交互式容器
创建容器后就启动该容器,并且登录容器,当推出exit时就关闭容器。
创建一个交互式容器并取名为 mycentos , ( /bin/bash 是linux中的命令解析器,会进入到容器里面命令行)
docker run -it --name=mycentos centos:7 /bin/bash
- 推出容器
退出容器并停止容器。
exit
3.3、启动与停止容器
- 启动单个容器
docker start 容器名称|容器id
- 启动所有容器
docker start `docker ps -a -q`
docker ps -a -q 是查询所有运行过的容器ID
- 停止正在运行的容器
docker stop 容器名称|容器id
- 强制停止运行的容器,一般不使用
docker kill 容器名称|容器id
- 停止所有在运行的容器
docker stop `docker ps -a -q`
3.4、创建守护式容器
如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器(后台运行的容器)。
- 创建(-d)并运行(-i)守护式容器命令如下(容器名称不能重复):
docker run -id --name=容器名称 镜像id
3.5、登录容器
登录已经启动的容器方式
使用 docker exec -it 进入容器中打开命令行终端
exit 针对通过 docker exec 进入的容器,只退出但不停止容器
docker exec -it 容器名称|容器id /bin/bash
3.6、删除容器
docker rm 容器名称 | 容器ID
3.7、查看容器详细
docker inspect 容器ID
3.8、查看容器IP
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器ID
3.9、容器中安装vim
Linux中每个docker是独立存在的,你需要给那个docker安装编辑器,需要进入指定的docker在安装。建议不要安装过多的东西,编辑器这些可以在将编辑文本复制到docker外边,编辑好或在复制进去也OK。
- 更新一下软件包
apt-get update
- 安装
vim
编辑器
apt-get install vim
3.10、宿主机与容器相互拷贝数据
- 从宿主机复制到容器内
docker cp 要拷贝的宿主机文件或目录 容器名称:容器文件或目录
- 从容器内复制到宿主机
docker cp 容器名称:要拷贝的容器文件或目录 宿主机文件或目录
3.11、数据目录挂载
数据目录挂载就是将宿主机的目录与容器中的目录进行映射,只需要修改宿主机的挂载目录就可以响应到宿主机中,使用
-v
选项。
docker run -id -v /宿主机绝对路径目录:/容器内目录 --name=容器名 镜像名
- 设置目录挂载只有只读权限
docker run -id -v /宿主机绝对路径目录:/容器内目录:ro --name=容器名 镜像名
四、常见应用
4.1、MySQL部署
- 拉取镜像
docker pull mysql:5.8
- 创建MySQL容器
docker run -id --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
-p 代表端口映射,格式为 宿主机映射端口:容器运行端口
-e 代表添加环境变量, MYSQL_ROOT_PASSWORD 是 root 用户的登陆密码
- 进入MySQL并登录
docker exec -it mysql /bin/bash
4.2、redis部署
- 拉取镜像
docker pull redis
- 创建redis容器
docker run -id --name=redis -p 6379:6379 redis