https://docs.docker.com/engine/install/centos/
Docker官方文档
安装Docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
#如果在官网安装慢,使用阿里云的库
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
#设置开机自动启动docker
sudo systemctl enable docker
docker -v
运行容器
#查看本地镜像
docker images
#测试docker
docker run hello-world
#查看运行中的容器
docker ps
#查看所有的容器
docker ps -a
#安装nginx
docker run --name nginx -p 80:80 -d nginx
#查看nginx的日志
docker logs nginx
#连接到容器内部
docker exec -it nginx /bin/sh
docker exec -it nginx /bin/bash
#查看安装docker的信息
docker info
docker stop nginx
docker start nginx
#删除容器
docker rm nginx
#删除镜像
docker rmi nginx
#服务器重启后,docker启动时自动运行容器
docker run --name nginx -p 80:80 --restart=always -d nginx
#修改容器设置项
docker update 容器id --restart=always
#docker up不能修改端口
docker rm -f 容器id
docker run --name nginx -p 88:80 --restart=always -d nginx
镜像的推送
#将自己修改好的容器提交到镜像中
docker commit -a "zhangsan" -m "优化" 容器id mynginx:v1.0
#保存镜像到本地文件
docker save -o intmall-nginx.tar mynginx:v1.0
#加载本地文件到镜像中(离线加载镜像)
docker load -i intmall-nginx.tar
# 把旧镜像的名字,改成仓库要求的新版名字
docker tag mynginx:v1.0 intmall/mynginx:v1.0
# 登录到docker hub
docker login
# 推送
docker push intmall/mynginx:v1.0
#退出
docker logout
挂载外部文件
#挂载数据到外部修改(外部文件会覆盖容器对应目录的文件)
docker run --name=mynginx -d --restart=always -p 88:80 -v /data/html:/usr/share/nginx/html nginx
#从容器中向本地复制文件
docker cp 容器id:/etc/nginx/nginx.conf /data/conf/nginx.conf
#把本地文件复制到容器里面
docker cp /data/conf/nginx.conf 容器id:/etc/nginx/nginx.conf
#在启动容器前,如果本地文件/data/conf/nginx.conf不存在,则会自动创建一个名称为/data/conf/nginx.conf的文件夹,导致容器启动失败
docker run --name=mynginx -d --restart=always -p 88:80 -v /data/html:/usr/share/nginx/html -v /data/conf/nginx.conf:/etc/nginx/nginx.conf nginx
#查看日志
docker logs 容器id
#启动所有容器
#启动所有容器
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
#关闭所有容器
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
#删除所有容器
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
#删除所有镜像(慎用)
docker rmi $(docker images | awk '{print $3}' |tail -n +2)
在阿里云站点开启容器镜像服务
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
在本地添加配置文件
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com", "http://hub-mirror.c.163.com", "https://rn2snvg1.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
安装Redis
#redis使用自定义配置文件启动
docker run -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d --name myredis -p 6379:6379 redis redis-server /etc/redis/redis.conf
安装ElasticSearch
# 创建数据目录
mkdir -p /mydata/es-01 && chmod 777 -R /mydata/es-01
# 容器启动
docker run --restart=always -d -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-v es-config:/usr/share/elasticsearch/config \
-v /mydata/es-01/data:/usr/share/elasticsearch/data \
--name es-01 \
elasticsearch:7.13.4
#具名挂载:卷名不是一个具体的路径
#具名挂载会把容器内对应目录中的文件复制到具名的外部文件夹中
#我们可以选择性的覆盖指定文件,适合于配置文件较多而只需要修改少数据配置文件的场景
#如上面的:-v es-config:/usr/share/elasticsearch/config #es-config是设定卷的名称,不是具体路径
docker volume ls
#查找卷对应的主机内目录
docker volume inspect es-config
#查看es-config中的由容器挂载出来的文件
ll /var/lib/docker/volumes/es-config/_data
#Elasticsearch错误日志:ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes]
docker logs es-01
#需要重新授权目录
ll /mydata/es-01/
chmod 777 -R /mydata/es-01
编写一个Dockerfile文件
FROM openjdk:8-jdk-slim
LABEL maintainer=intmall
COPY target/*.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
把打包好的java文件jar包放到Dockerfile文件同级的target目录中
执行命令打包生成镜像 docker build -t java-demo:v1.0 .
Docker基础(狂神说Docker课程笔记)
容器数据卷挂载,具名挂载和匿名挂载