Docker解决什么问题?
解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
开发/运维(DevOps)一次构建、随处运行
下载地址:
docker官网:http://www.docker.com
docker中文网站:https://www.docker-cn.com/
Docker Hub官网: https://hub.docker.com/
Docker的基本组成:
1、安装Docker:
yum install -y epel-release
yum install -y docker-io
2、安装后的配置文件:
/etc/sysconfig/docker
3、启动Docker后台服务:
service docker start
4、验证Docker版本
docker version
1、启动docker
yum -y install gcc
yum -y install gcc-c++
2、卸载旧版本
yum -y remove docker docker-common docker-selinux docker-engine
3、安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
4、设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5、更新yum软件包索引
yum makecache fast
6、安装DOCKER CE
yum -y install docker-ce
7、启动docker
systemctl start docker
8、测试docker
docker version
docker run hello-world
9、配置镜像加速
mkdir -p /etc/docker
vim /etc/docker/daemon.json
systemctl daemon-reload
systemctl restart docker
10、卸载
systemctl stop docker
yum -y remove docker-ce
rm -rf /var/lib/docker
docker version
docker info
docker --help
docker images
-a :列出本地所有的镜像(含中间映像层)
-q :只显示镜像ID
--digests :显示镜像的摘要信息
--no-trunc :显示完整的镜像信息
docker search 某个XXX镜像名字
docker search [OPTIONS] 镜像名字
--no-trunc : 显示完整的镜像描述
-s : 列出收藏数不小于指定值的镜像
--automated : 只列出 automated build类型的镜像
docker pull 某个XXX镜像名字
docker pull 镜像名字[:TAG]
删除单个
docker rmi -f 镜像ID
删除多个
docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除全部--小心使用哈
docker rmi -f $(docker images -qa)
总体步骤
搜索镜像
拉取镜像
查看镜像
启动镜像
停止容器
移除容器
新建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run -it -p 8080:8080 tomcat
-p:主机端口:docker容器端口
-P:随机分配端口
-i:交互
-t:终端
-v:数据卷
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
列出当前所有正在运行的容器
docker ps [OPTIONS]
退出容器
exit容器停止退出
ctrl+P+Q容器不停止退出
启动容器
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 run -d 容器名
查看容器日志
docker logs -f -t --tail 容器ID
* -t 是加入时间戳
* -f 跟随最新的日志打印
* --tail 数字 显示最后多少条
查看容器内运行的进程
docker top 容器ID
查看容器内部细节
docker inspect 容器ID
进入正在运行的容器并以命令行交互
docker exec -it 容器ID bashShell
重新进入docker attach 容器ID
attach 直接进入容器启动命令的终端,不会启动新的进程
exec 是在容器中打开新的终端,并且可以启动新的进程
从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径
1、测试环境,安装mysql--不推荐
docker pull mysql:latest
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql
2、生成环境,挂载目录,安装mysql5.7,把数据映射到本地某个目录,容器删除重建之后,数据不会丢失。
docker pull mysql:5.7
# 创建目录
mkdir /usr/local/docker/mysql/logs
mkdir /usr/local/docker/mysql/data
mkdir /usr/local/docker/mysql/conf
touch my.cnf
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
#mysql5.7以后的不兼容问题处理
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
#允许最大连接数
max_connections=200
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
#设置时区
default-time_zone='+8:00'
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
docker run \
--name mysql5.7 -p 3306:3306 \
--privileged=true \
--restart=always \
-d \
-v /usr/local/docker/mysql/logs:/logs \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-v /usr/local/docker/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-e MYSQL_ROOT_PASSWORD=root mysql:5.7
安装Percona
docker pull percona:5.7.23
docker create --name percona -v /data/mysql-data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23
docker start percona
1、安装redis
测试环境--不推荐
docker pull redis:latest
docker run -itd --name redis -p 6379:6379 redis:latest
生产环境,
# 从官网获取redis.conf 配置文件
# bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问
# protected-mode no #默认yes,开启保护模式,限制为本地访问
# daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程(可选),改为yes会使配置文件方式启动redis失败
# dir ./ #输入本地redis数据库存放文件夹(可选)
# appendonly yes #redis持久化(可选)
# 创建目录
mkdir /usr/redis/data:/data
# 创建配置文件
touch /usr/redis/conf/redis.conf
docker run \
-p 6379:6379 \
-v /usr/redis/data:/data \
-v /usr/redis/conf/redis.conf:/etc/redis/redis.conf \
--privileged=true \
--network=host \
--name myredis \
-d redis redis-server /etc/redis/redis.conf
2、安装mongodb
测试环境--不推荐
docker pull mongo:latest docker run -itd --name mongo -p 27017:27017 mongo
3、安装memcached
测试环境--不推荐
docker pull memcached:1.5.16 docker run --name my-memcache -p 11211:11211 -d memcached:1.5.16
docker pull rabbitmq:management docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 rabbitmq:management
15672:控制台端口号
5672:应用访问端口号
账号和密码为:admin
docker pull webcenter/activemq docker run -d --name activemq -p 61616:61616 -p 8162:8161 webcenter/activemq
默认的登录密码为admin admin
docker pull wurstmeister/zookeeper docker pull wurstmeister/kafka
启动zk
docker run -d --name kafkazookeeper -p 2181:2181 --restart=always -t wurstmeister/zookeeper
启动kafka
docker run -d --name kafka -p 9092:9092 --restart=always -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.8.6:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.8.6:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
启动NameServer:
docker run -d -p 9876:9876 --name rmqserver foxiswho/rocketmq:server-4.5.1
启动broker:
docker run -d -p 10911:10911 -p 10909:10909\ --name rmqbroker --link rmqserver:namesrv\ -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt"\ -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m"\ foxiswho/rocketmq:broker-4.5.1
Broker容器中默认的配置文件的路径为:
/etc/rocketmq/broker.conf
也可以通过-v参数指定本机的配置文件:
docker run -d -p 10911:10911 -p 10909:10909\ --name rmqbroker --link rmqserver:namesrv\ -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt"\ -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m"\ -v /conf/broker.conf:/etc/rocketmq/broker.conf \ foxiswho/rocketmq:broker-4.5.1
启动rocketmq console
docker run -d --name rmqconsole -p 8180:8080 --link rmqserver:namesrv\ -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876\ -Dcom.rocketmq.sendMessageWithVIPChannel=false"\ -t styletang/rocketmq-console-ng
[root@ZhiNeng~]# cat /etc/sysctl.conf
vm.max_map_count=262144 #加文末
[root@ZhiNeng~]# sysctl -p #验证
docker pull sebp/elk
docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -e ES_MIN_MEM=128m -e ES_MAX_MEM=1024m -it --name elk sebp/elk
docker pull elasticsearch:6.5.4
docker create --name elasticsearch --net host -e "discovery.type=single-node" -e "network.host=172.16.55.185" elasticsearch:6.5.4
docker start elasticsearch
docker logs elasticsearch
docker pull mobz/elasticsearch-head:5
docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5
docker start elasticsearch-head
docker run --name mysolr -d -p 8983:8983 solr
docker exec -it 实例id /bin/bash
cp -r server/solr/configsets/_default/conf /var/solr/data/collection1
docker pull zookeeper:3.5
docker run -itd --name zk -p 2181:2181 zookeeper:3.5
docker pull morunchang/fastdfs
docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh
docker run -d --name storage --net=host -e TRACKER_IP=172.168.20.221:22122 -e GROUP_NAME=group1 morunchang/fastdfs sh storage.sh
# 修改nginx的配置
docker exec -it storage /bin/bash
vi /data/nginx/conf/nginx.conf
location /group1/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group1;
expires 30d;
}
docker run --restart=always --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。