一、安装docker
1.1 查看linux版本
cat /etc/redhat-release
1.2 安装需要的库
# yum-utils 提供了 yum-config-manager
# device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2
yum install yum-utils device-mapper-persistent-data lvm2
1.3 设置使用阿里云镜像仓库
# 设置镜像仓库,使用阿里云镜像地址,配置存放在/etc/yum.repos.d/docker-ce.repo中
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.4 更新yum软件包索引、安装docker、启动
# 更新yum软件包索引
yum makecache fast
# 安装docker-ce(centos7),docker-io(centos6)
yum -y install docker-ce
# 启动
systemctl start docker
# 查看状态
systemctl status docker
# 查看版本
docker version
二、配置镜像加速
2.1 查找自己的镜像加速地址,你需要登录自己的账号找到自己的
2.2 修改加速配置文件
# 没有就新建配置文件,有就修改
vim /etc/docker/daemon.json
添加下边这段json串 (地址填写自己的专属地址)
{
"registry-mirrors": ["https://hq5nabsr.mirror.aliyuncs.com"]
}
# 网易云地址
{
"registry-mirrors": ["https://hub-mirror.c.163.com/"]
}
2.3 刷新、重启docker
# 刷新、重启
systemctl daemon-reload
systemctl restart docker
三、基本命令
3.1 镜像命令
# 列出本机所有的镜像
docker images
# 可以跟参数
-a //列出所有
-q //只显示id
--digests //显示摘要信息
--no-trunc //显示完整信息
# 查找官方网站中某个镜像
docker search tomcat
# 下载tomcat镜像。后边不跟版本号,表示latest
docker pull tomcat
# 删除镜像,不加版本号默认是latest
docker rmi tomcat
# 强制删除某个镜像
docker rmi -f tomcat
# 强制删除多个
docker rmi -f tomcat nginx
# 强制删除所有
docker rmi -f $(docker images -qa)
3.2 容器命令
3.2.1 启动交互式容器
# 新建并启动启动交互式容器
docker run -it centos
-i // 以交互模式运行容器,通常与-t同时使用
-t // 为容器重新输入一个伪输入终端,与-i一起使用
--name // 给容器起个名字
# 列出当前所有正在运行的容器
docker ps -lq
-l //最近运行的一个容器
-q //只显示容器id
-n //后边跟最近几个运行的容器
-a //列出所有
# 启动容器
docker start 容器ID或名字
# 重启容器
docker restart 容器ID或名字
# 停止容器
docker stop 容器ID或名字
# 强制停止容器
docker kill 容器ID或名字
# 删除停止的容器
docker rm 容器ID或名字
# 强制删除某个容器(可以是运行中的)
docker rm -f 容器ID或名字
# 强制删除所有,包括运行中的
docker rm -f $(docker ps -qa)
# 同上,删除多个容器
docker ps -qa | xargs docker rm
3.2.2 启动守护式(后台运行的)容器
# 新建并启动守护式容器,也就是后台运行的进程
docker run -d centos
# 查看容器日志
docker logs -f -t --tail 5 容器ID
-f // 跟随最新的日志打印
-t // 加入时间戳
--tail // 显示最后5条日志
# 查看容器内进程
docker top 容器id
# 查看容器内部细节
docker inspect 容器ID
3.2.3 退出容器
# 停止并退出容器
exit
# 不停止、退出容器
ctrl+P+Q
3.2.4 重新进入一个退出但未停止的容器
# 进入某个退出但未停止的容器
docker attach 容器ID
# 同上,进入容器
docker exec -it 容器ID /bin/bash
# 不进入,查询容器某个目录
docker exec -it 容器ID ls -lh /tmp
3.2.5 拷贝容器内数据到主机上
# 拷贝容器中的某个文件到主机某个目录
docker cp 容器ID:/root/test.txt /root
docker cp 容器名字:/root/test.txt /root
3.2.6 拷贝主机文件到docker上
# 拷贝主机文件到docker
docker cp /root/test/test.conf 容器ID:/root/test/
docker cp /root/test/test.conf 容器名字:/root/test/
3.3 容器数据卷:实现容器和宿主机数据共享、数据持久化
3.3.1 命令行 -v添加
# docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it -v /hostData:/containerData centos
3.3.2 DockerFile添加
手动编写一个dockerfile文件 |
docker build命令执行,得到一个自定义镜像 |
docker run镜像 |
四、常用软件安装
4.1 安装mysql
# 拉取mysql
docker pull mysql
# 查看
docker images
# 启动运行容器
# 第一行:主机端口12345映射到docker的3306
# 第二行:主机和容器的配置文件挂载
# 第三行:主机和容器的日志目录挂载
# 第四行:主机和容器的data目录挂载
# 第五行:初始化root密码
# 第六行:后台运行mysql
docker run -p 12345:3306 --name mysql
-v /wenlong/mysql/conf:/etc/mysql/conf.d
-v /wenlong/mysql/logs:/logs
-v /wenlong/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456
-d mysql
使用navicat或者SQLyog远程连接时可能需要授权
# 登录docker
docker exec -it 43103e45832f /bin/bash
# 登录
mysql -uroot -p
# 登录后授权可以从任何地方使用root用户访问
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新权限
flush privileges;
# 退出
exit
4.2 安装redis
# 拉取redis
docker pull redis
# 第一行:启动容器,端口号6379
# 第二行:数据目录挂载
# 第三行:配置文件目录挂载
# 第四行:后台启动redis redis-server,配置文件是redis.conf
# 第五行:开启持久化
docker run -p 6379:6379
-v /wenlong/redis/data:/data
-v /wenlong/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
-d redis redis-server /usr/local/etc/redis/redis.conf
--appendonly yes
# 宿主机连接redis
docker exec -it 运行中的容器ID redis-cli
# 当容器退出时,数据被持久化保存
# 保存位置:标识在上边启动容器命令行第二行中
# 宿主机在/wenlong/redis/data/;容器在/data/中
vim /wenlong/redis/data/appendonly.aof
# 登录容器查看data
docker exec -it 运行中的容器ID /bin/bash
也可以使用redis-desktop-manager 工具进行浏览