尚硅谷 dockers 学习笔记
1. 安装docker
1. 卸载docker
停止docker
systemctl stop docker
卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
yum remove docker-ce docker-ce-cli containerd.io
查询所有的docker卸载残留
yum list installed |grep docker
删除查询出来的残留
yum remove *******
删除镜像、容器、配置文件等内容:
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
验证删除成功
docker -v
2. 安装前准备
# yum安装gcc相关
yum -y install gcc
yum -y install gcc-c++
# 安装需要的软件包
yum install -y yum-utils
# 设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum软件包索引
yum makecache fast
3. 离线方式安装docker
链接:https://pan.baidu.com/s/1s1lhCLlmbZk0NpFuw2sySA
提取码:ss9h
4. 联网自动化安装docker
Docker官方和国内daocloud都提供了一键安装的脚本,使得Docker的安装更加便捷。
官方的一键安装方式:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
国内 daocloud一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
执行上述任一条命令,耐心等待即可完成Docker的安装。
5. 联网手动安装
# yum安装gcc相关
yum -y install gcc
yum -y install gcc-c++
# 安装需要的软件包
yum install -y yum-utils
# 设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum软件包索引
yum makecache fast
# 安装DOCKER CE
yum -y install docker-ce docker-ce-cli containerd.io
# 启动docker
systemctl start docker
# 查看docker版本
docker version
docker -v
6. 镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://hl1kipsc.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
7. docker run 命令原理
安装redis可视化工具
链接:https://pan.baidu.com/s/1PN7WHpzDYd5cxukwLwhiiw
提取码:ukkc
2. docker 常用命令
1. 启动类命令
# 启动docker:
systemctl start docker
# 停止docker:
systemctl stop docker
# 重启docker:
systemctl restart docker
# 查看docker状态:
systemctl status docker
# 开机启动:
systemctl enable docker
# 查看docker概要信息:
docker info
# 查看docker总体帮助文档:
docker --help
# 查看docker命令帮助文档:
docker 具体命令 --help
2. 镜像命令
# 列出所有镜像
docker images
# 查询镜像, 从地址: https://hub.docker.com
docker search 某个XXX镜像名字
# 下载镜像, 等同于 docker pull 镜像名字:latest, 下载的是最新版本
docker pull 某个XXX镜像名字
# 查看镜像/容器/数据卷所占的空间
docker system df
# 删除单个镜像
docker rmi -f 镜像ID
# 删除所有镜像
docker rmi -f $(docker images -qa)
3. 容器命令
新建容器
# 新建容器
docker run -参数 镜像名称 命令 其他的参数选项
docker pull ubuntu
# -it 会直接进入容器内部
docker run -it ubuntu /bin/bash
# 参数说明
--name="容器新名字" 为容器指定一个名称;
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
也即启动交互式容器(前台有伪终端,等待交互);
-P: 随机端口映射,大写P
-p: 指定端口映射,小写p
# 将容器内的 80 端口, 映射到 外面的 8080 端口
-p 8080:80
# 显示正在运行的容器
docker ps
# 显示所有容器
docker ps -a
# 退出容器
exit
# 启动容器
docker start 容器ID或者容器名
# 重启容器
docker restart 容器ID或者容器名
# 停止容器
docker stop 容器ID或者容器名
# 强制停止容器
docker kill 容器ID或容器名
# 删除单个容器
docker rm 容器ID
# 删除所有容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
# 查看容器日志
docker logs 容器ID
# 查看容器内运行的进程
docker top 容器ID
# 查看容器内部细节
docker inspect 容器ID
# 进入容器
docker exec -it 容器ID /bin/bash
# 从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径
# 将容器导出为一个 tar 文件, 其他人可以用这个tar 文件, 复制你的容器
docker export 容器ID > 文件名.tar
# 其他人导入 tar 文件生成一个镜像
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
3. docker安装软件
docker 安装 mysql
下载 mysql5.7镜像
# docker pull mysql:版本号
docker pull mysql:5.7
创建实例并启动
参数说明
-p 3306:3306:将容器的 3306 端口映射到主机的 3307 端口 注意为了防止端口冲突改成3307端口
-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机, 这样修改/etc/mysql下的文件就相当于修改 dockers 中的配置文件
-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码为root
docker run -p 3307:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
进入dockers的mysql 容器
docker exec -it mysql /bin/bash
查看MySQL安装位置
配置文件在 /etc/mysql 下
日志文件在 /var/log/mysql 下
whereis mysql
在 Linux 中 修改 docker 中的MySQL 配置
初始 /mydata/mysql/conf/ 下没有my.cnf文件, vi 命令会自动创建一个my.cnf文件
vi /mydata/mysql/conf/my.cnf
将下面的内容复制进 my.cnf文件中, 并 保存
其中 skip-name-resolve 是为了跳过域名解析, 解决mysql连接慢的问题
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
重启mysql容器
docker restart mysql
再次进入容器中
# 进入容器
docker exec -it mysql /bin/bash
# 查看容器内配置文件挂载情况, 和linux中一样说明挂载成功
cat /etc/mysql/my.cnf
设置 root 远程访问
执行以下命令, 并使用navicat连接数据库, 用户名: root ,密码 : root
# 在linux 中登录 docker中的mysql
docker exec -it mysql mysql -uroot -proot
# 设置远程访问权限
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
# 刷新配置
flush privileges;
设置 mysql 容器开机自启动
sudo docker update mysql --restart=always
docker 安装 reids
下载镜像文件
docker pull redis
创建实例并启动
# 在linux中创建redis挂载文件目录
mkdir -p /mydata/redis/conf
# 创建挂载文件
touch /mydata/redis/conf/redis.conf
# 实例化一个redis容器
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf
# 在linux中连接redis客户端
docker exec -it redis redis-cli
上面安装的redis是没有持久化的, 配置redis持久化
# 编辑linux中挂载的redis配置文件
vi /mydata/redis/conf/redis.conf
# 设置redis持久化
appendonly yes
# 重启redis容器
docker restart redis
设置 redis 容器开机自启动
sudo docker update redis --restart=always