docker是什么?能干嘛?
- Docker 是一个开源平台,支持开发人员快速构建、部署、运行、更新和管理容器;
- 容器使用沙盒机制(每一个沙箱可理解为是一个独立的主机,互不干扰),相互之间不会存在任何接口。 几乎没有性能开销,可以很容易的在机器和数据中心运行。
一、Docker的安装
1.centos7安装Docker
如果之前安装旧版本的Docker,进行下面的操作进行卸载
1.1 卸载Docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
1.2 安装docker
在 Linux 发行版中安装 yum-utils
、device-mapper-persistent-data
和 lvm2
这三个软件包
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
设置yum镜像源
# 设置阿里云镜像
yum-config-manager \
--add-repo \
https: //mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker
#国内访问不到docker,这是由于国内访问不到docker官方镜像的缘故,可以通过aliyun的源来完成:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker社区版
sudo yum install docker-ce
启动、查看 docker 是否成功
# 启动docker
systemctl start docker
# 查看docker启动状态
systemctl status docker
# 查看docker版本
docker -v
配置镜像加速器([容器镜像服务 (aliyun.com)](https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors?accounttraceid=a0f7c944d27d4c66b2b811edab3ca11eaneq))
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
根据自己的服务器选择下面的操作进行下一步
# ubuntu
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://zaha1ngk.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
#centos7
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://zaha1ngk.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker 的基本操作
#查看镜像
docker images
#删除镜像
docker rmi
#分享镜像
#方式一:
Docker Registry 镜像服务器
docker push 将镜像推送到服务
docker pull 从服务拉取镜像
#方式二:
#将docker save 保存为一个压缩包,
docker load 加载压缩包为镜像
#拉取镜像
docker pull nginx
#打包镜像
docker save -o nginx.tar nginx:latest
#删除镜像
docker rmi nginx:latest
#docker加载配置
docker load -i nginx.tar
#运行-> 暂停
docker pause
#暂停-> 运行
docker unpause
#运行-> 停止
docker stop
#停止->运行
docker start
#查看docker容器运行日志
docker logs
#查看所有运行的容器状态
docker ps
#删除指定容器
docker rm
# docker开机自启
systemctl enable docker.service
# 服务开机自启
docker update --restart=always 容器名
# docker run 运行并创建一个容器
# --name 容器名字
# -p 将宿主机端口与容器端口映射,左侧80端口是宿主机端口,冒号右侧容器内端口
# -d 后台运行容器
# nginx 镜像名称,例如基于nginx创建
docker run --name containerName -p 80:80 -d nginx
操作docker内部的文件修改
# 进入容器操作容器内部的命令
docker exec -it mynginx bash
# nginx静态文件存储位置: /usr/share/nginx/html
# 修改docker文件
sed -i 's#welcome to nginx#你好啊#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html
# 3 数据卷(Volumes)
# 数据卷操作
docker volume[COMMAND]
# create 创建一个volume
# inspect 显示一个或者多个列表
# ls 列出所有的volume卷
# prune 删除未使用的volume
# rm 删除一个或者多个指定的volume
#3.1 挂载数据卷
docker run \
--name mn \
-v html:/root/html \
-p 8080:80 nginx
# 例如创建一个nginx容器将端口挂在到html数据卷中
docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx
# docker内部的conf文件默认在以下文件内
cd /etc/nginx
使用docker安装mysql与redis
docker run -d --privileged=true --restart=always --name mq \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-v /media/mydisk/app/mysql/config/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /media/mydisk/app/mysql/data:/var/lib/mysql \
-d \
mysql
# 创建用户组
CREATE USER 'root123'@'%' IDENTIFIED WITH mysql_native_password BY 'root123456';
GRANT mygroup TO 'root123'@'%';
docker run -d --privileged=true --restart=always -p 6379:6379 -v /media/mydisk/app/redis/conf/redis.conf:/etc/redis/redis.conf -v /media/mydisk/app/redis/data:/data --name redis redis:latest redis-server /etc/redis/redis.conf --appendonly yes