Centos7安装dokcer CE
#先删除已有的
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 \
device-mapper-persistent-data \
lvm2
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo docker run hello-world
#你过你敲docker敲不出来反应,而加了sudo又有反应,那么你应该添加你的docker权限。
sudo usermod -aG docker (你的用户)
# 方法二
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Docker加速
mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF
# 或用Docker中国加速
mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
# 重启docker
systemctl restart docker
Windows下载
- hub.docker.com/search?q=&t…
- 注意事项:Windows10必须为专业版, 必须开启Hyper-V,必须为64位处理器,4GM RAM以上,BIOS开启虚拟化支持。
问题解决
技巧
- 使用VSCode管理K8S,Docker。VSCode Docker插件,Kubernetes插件。
安装Docker Compose
curl -L https://github.com/docker/compose/releases/download/1.25.0-rc4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Docker 搭Mysql
docker pull mysql
#默认会下最新版。需要其他版本,请加后缀tag比如, mysql:5.7,就会抽取5.7的。
docker run -p 3306:3306 --name sql_docker -e MYSQL_ROOT_PASSWORD=123 -d mysql
说明
-p 3306:3306 将容器内3306端口映射到宿主机
--name 运行的容器名
-e environment(环境),指定容器启动时候的环境变量。可以指定其他环境变量如下 。
MYSQL_ROOT_PASSWORD:root 密码 。
MYSQL_DATABASE:[可选的] 容器启动后自动创建的数据库。
MYSQL_USER, MYSQL_PASSWORD: [可选的] 创建对应MYSQLDATABASE数据库的用户名和密码,并默认拥有MYSQL_DATABSE所有权限
MYSQL_ALLOW_EMPTY_PASSWORD:[可选] 是否允许密码为空。
MYSQL_RANDOM_ROOT_PASSWORD:[可选] 随机生成root密码,并会通过标准输出输出到控制台。
MYSQL_ONETIME_PASSWORD:[可选] 我感觉没啥用,就是说你第一次登陆mysql后必须修改你的root密码。
-d 后台运行
最后指定镜像名称
使用本地mysql.cnf映射到容器内
docker run --name some-mysql -v {你的mysql配置地址}:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
将容器内mysql数据存储到宿主机
docker run --name some-mysql -v {你的存储地址}:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
最后进入mysql容器开启远程登陆
docker exec -it {运行起来的mysql容器名,或者hash码} bash
mysql -uroot -p
grant all privileges on *.* to 'root'@'%' identified by '{你的root密码}';
flush privileges;
Redis
docker pull redis
#一样的可以通过 redis:{tag名} 来选择拉取那个版本的镜像
docker run --name {你想要等redis运行时候容器名} -p 6379:6379 -d redis
定制化配置文件,一样的使用-v参数。
$ docker run -v {你的配置文件地址}:/usr/local/etc/redis/redis.conf --name {你的容器名} redis redis-server /usr/local/etc/redis/redis.conf
MongoDb
docker pull mongo
docker run --name myMongo -p 27017:27017 -d mongo:tag
定制配置文件启动
docker run --name some-mongo -v /my/custom:/etc/mongo -d mongo --config /etc/mongo/mongod.conf
环境变量 使用-e指定, MONGO_INITDB_ROOT_USERNAME, MONGO_INITDB_ROOT_PASSWORD
宿主机存储数据 ,一样一样用 -v
docker run --name some-mongo -v /my/own/datadir:/data/db -d mongo
RabbitMq
docker pull rabbitmq:management
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
#5672为程序接入接口,15672为后台WebUI接入口。
Docker搭建Maven私服
docker pull sonatype/nexus3
#数据持久化
docker run -d -p 8081:8081 --name nexus -v {你的持久化苏主机地址}:/nexus-data sonatype/nexus3
两条命令就完成了,很简单吧。打开浏览器访问,默认有个账户为admin,账户密码在你的持久化文件夹的admin.password文件中,当然也可以去容器内部/nexus3文件夹下看。
Nexus可以搭建很多私服,包括Yum,Python,Npm等等,有兴趣可以参考官网文档。
ES单机
Pull 官方镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.4.2
docker network create myes
离线Image地址
单节点
docker run -d --name elasticsearch --net myes -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
Kibana
docker pull kibana:6.8.5
docker network create myes
docker run -d --name kibana --net myes -p 5601:5601 kibana:6.8.5
Kafka Zk
docker pull zookeeper
docker run -d -p 2181:2181 --name=zookeeper --privileged zookeeper
docker pull wurstmeister/kafka
docker run -d --name kafka -p 9092:9092 --env KAFKA_ADVERTISED_HOST_NAME=localhost -e KAFKA_ZOOKEEPER_CONNECT=192.168.9.219:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.9.219:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -e KAFKA_HEAP_OPTS="-Xmx256M -Xms128M" --net=host wurstmeister/kafka
InfluxDb
docker run -d --name influx -p 8086:8086 influxdb
Grafana
docker run -d --name=grafana -p 3000:3000 grafana/grafana