# (文档:https://docs.docker.com/engine/install/centos/)
1 安装 docker
1.0 移除旧版本
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
1.1 安装依赖
yum install -y yum-utils
# device-mapper-persistent-data lvm2
1.2 设置docker仓库(随便选择)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo (阿里云镜像 速度比较快)
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo (官方镜像 速度慢)
1.3 执行不知名命令
yum-config-manager --enable docker-ce-nightly
yum-config-manager --enable docker-ce-test
1.4 安装docker 容器
yum install docker-ce docker-ce-cli containerd.io
1.5 启动docker
systemctl start docker
1.6 下载镜像速度慢,可以配置镜像加速器(百度即可)
2 常用命令
docker pull centos (下载镜像) 指定版本 docker pull redis:3.2
docker rmi 删除镜像
docker rm 容器1 删除容器 (docker rm `docker ps -a -q` 删除所有)
创建运行交互式容器 (退出就停止)
docker run -i -t --name 容器名字 镜像名 /bin/sh (例:docker run -i -t --name 容器1 centos /bin/sh)
创建运行守护式容器 (退出不停止)
docker run -d -i -t --name 容器2 centos /bin/sh
--privileged=true 容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-v /tool/docker/redis/conf/redis.conf:/etc/redis/redis.conf 映射配置文件
-v /tool/docker/redis/data:/data 映射数据目录
redis-server /etc/redis/redis.conf 指定配置文件启动redis-server进程
--appendonly yes 开启数据持久化
登录到容器(-it == -i -t)
docker exec -it 容器2 /bin/sh
exit 退出容器
docker stop 容器1 终止容器
docker start 容器1 启动容器
docker ps 查看正常运行的容器
docker ps -a 查看历史容器
docker pa -l 查看最后运行的容器
docker inspect 容器1 查看容器详细信息
文件拷贝
docker cp 1.txt 容器1:/root centos -> 容器
docker cp 容器1:/root/1.txt /root 容器 -> centos
docker images 查看本地镜像
docker search redis 查看镜像
3 目录挂载
docker run -itd --name c2 -v /opt:/usr/local/opt centos /bin/sh
4 镜像制作
docker commit 容器名 新名字
5 镜像打包
docker save -o /root/mytomcat.tar mytomcat 打包
scp tomcat.tar ip:/root 将打包的镜像传到别的服务器
docker load -i /root/mytomcat.tar 导入镜像到docker
6 Dockerfile创建镜像 (百度即可))
1 创建Dockerfile文件
2 FROM ... MAINTAINER .. RUN yum install -y pcre pcre-devel openssl openssl-devel gcc ....
3 docker build -t 名字 --rm=true (构建 指定名字 删除中间过程的文件)
7 镜像仓库
1 docker hub
2 阿里云
3 本地私有
3.0
docker run -d -p 5000:5000 --restart=always --name registry -v /xx/registry:/var/list/registry registry:2
docker push 镜像名 (推送镜像)
3.1配置私有仓库证书
openssl req -x509 -days 3650 -subj '/CN=192.168.1.54:5000/' --nodes newkey rsa:2048 -keyout domain.key -out domain.crt
8 docker 集群 swarm
1 指定管理节点 docker swarm init --advertise-addr 192.168.1.5
2 查询管理节点的集群信息 docker node ls
3 加入集群 docker swarm join --token SWMTKN-1-3wwctdfoh2nan0v2e4wdte3jn722vuwlxeyvke3bvb8ggb1lnj-a1ytbb4s9ia4drph1c5wh47e6 192.168.1.5:2377
中间的token是动态的。所以不同的集群这个命令的token不一样 注意关闭防火墙
4 发布服务
docker service create -- replicas 1 --name helloworld alpine
5 删除服务
docker service rm 服务名字
6 部署nginx
1 创建一个orerlay网络
docker network create -d=overlay myOverlay
2 部署nginx
docker service create --network myOverlay --name myNginx -p 8080:80 --replicas 1 nginx
9 compose 编排工具
10 可视化工具
docker UI
docker run -d -p 9000:9000 -- privileged -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker
mysql :docker run -p 13306:3306 --name my-mysql -v $PWD/conf:/etc/mysql -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26
redis :docker run -p 6379:6379 --name redis -v /tool/docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /tool/docker/redis/data/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
es :docker run -p 9200:9200 -p 9300:9300 --name elasticsearch -v /etc/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /etc/elasticsearch/data:/usr/share/elasticsearch/data -v /etc/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:7.5.0
rocketmqserver:docker run -d -p 9876:9876 -v /tool/docker/rocketmq/data/namesrv/logs:/root/logs -v /tool/docker/rocketmq/data/namesrv/store:/root/store --name rmqnameserver -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv
rocketmqbroker:docker run -d -p 10911:10911 -p 10909:10909 -v /tool/docker/rocketmq/data/broker/logs:/root/logs -v /tool/docker/rocketmq/rocketmq/data/broker/store:/root/store -v /tool/docker/rocketmq/conf/broker.conf:/opt/rocketmq/conf/broker.conf --name rmqbroker --link rmqnameserver:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq/conf/broker.conf
UI控制台 :docker run -d --name rmqui -e "JAVA_OPTS=-Drocketmq.config.namesrvAddr=192.168.2.238:9876 -Drocketmq.config.isVIPChannel=false" -p 8080:8080 -t styletang/rocketmq-console-ng
kibana :docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name xinyar-kibana -p 5601:5601 -v /data/elk/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.4.1
logstash:docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 -p 5044:5044 --name logstash -v /etc/logstash/conf/logstash.yml:/usr/share/logstash/config/logstash.yml -v /etc/logstash/config/:/usr/share/logstash/conf.d/ -v /etc/logstash/lib/mysql-connector-java-6.0.6.jar:/usr/share/logstash/logstash-core/lib/jars/mysql-connector-java-6.0.6.jar logstash:7.5.0