docker环境安装
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 yum update yum install -y yum-utils yum -y install htop yum -y install tree yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fase yum install docker-ce docker-ce-cli containerd.iomkdir -p /etc/dockertee /etc/docker/daemon.json <<-'EOF' {"registry-mirrors" : ["https://xxxxxxx.mirror.aliyuncs.com" ] } EOF systemctl daemon-reload systemctl restart docker systemctl enable docker
docker常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 docker build -t 镜像名称 docker load -i xxx.tar docker rmi [-f] 镜像名称或ID -f, --force 强制删除 docker save hello-world:latest -o /home/docker/images/hello-world.tar docker run -d --name 容器名称 -p 8080:80 镜像名称 docker start 镜像名称 docker stop 镜像名称 docker top 镜像名称 docker inspect 镜像名称 docker cp 容器id :容器内路径 目的主机路径 docker logs [可选参数] 容器ID --details 显示提供给日志的其他详细信息 -f, --follow 跟踪日志输出 -n, --tail string 指定要显示的日志条数 (默认为全部) -t, --timestamps 显示时间戳 docker rm 镜像名称 docker exec -it 容器名称 容器命令行exit
docker安装Portainer
Portainer是一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker环境。 而且完全免费,基于容器化的安装方式,方便高效部署。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 docker search portainer docker pull portainer/portainer-ce docker volume create portainer_data docker run -d -p 9000:9000 --restart=always --name=portainer \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce docker ps -a vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock --containerd=/run/containerd/containerd.sock systemctl daemon-reload systemctl restart docker
docker开启远程安全访问(TLS) 通过TLS
方式远程安全访问docker,这里配置docker端口为2375
,同步需要打开防火墙
首先,创建一个ca文件夹存放公钥和私钥
1 2 3 4 mkdir /usr/local/userShcd /usr/local/userShtouch tls.sh vi tls.sh
将下列脚本内容复制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 #!/bin/bash SERVER="服务器ip" PASSWORD="nicetry" COUNTRY="CN" STATE="Sichuan" CITY="Hangzhou" ORGANIZATION="nicetry" ORGANIZATIONAL_UNIT="Dev" EMAIL="nicetry@163.com" echo "开始生成文件" mkdir -p /usr/local/cacd /usr/local/ca openssl genrsa -aes256 -passout pass:$PASSWORD -out ca-key.pem 4096 openssl req -new -x509 -passin "pass:$PASSWORD " -days 3650 -key ca-key.pem -sha256 -out ca.pem -subj "/C=$COUNTRY /ST=$STATE /L=$CITY /O=$ORGANIZATION /OU=$ORGANIZATIONAL_UNIT /CN=$SERVER /emailAddress=$EMAIL " openssl genrsa -out server-key.pem 4096 openssl req -subj "/CN=$SERVER " -new -key server-key.pem -out server.csr sh -c 'echo "subjectAltName = DNS:' $SERVER ',IP:0.0.0.0" >> extfile.cnf' sh -c 'echo "extendedKeyUsage = serverAuth" >> extfile.cnf' openssl x509 -req -days 3650 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD " -CAcreateserial -out server-cert.pem -extfile extfile.cnf openssl genrsa -out key.pem 4096 openssl req -subj '/CN=client' -new -key key.pem -out client.csr sh -c 'echo extendedKeyUsage=clientAuth >> extfile.cnf' openssl x509 -req -days 3650 -in client.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD " -CAcreateserial -out cert.pem -extfile extfile.cnf chmod 0400 ca-key.pem key.pem server-key.pemchmod 0444 ca.pem server-cert.pem cert.pemrm client.csr server.csrcp server-*.pem /etc/docker/cp ca.pem /etc/docker/echo "生成文件完成"
执行脚本,在/usr/local/ca/
目录下生成ca证书
修改docker配置文件
1 2 3 4 5 6 vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/usr/local/ca/ca.pem --tlscert=/usr/local/ca/server-cert.pem --tlskey=/usr/local/ca/server-key.pem -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock --containerd=/run/containerd/containerd.sock systemctl daemon-reload systemctl restart docker
在Portainer
中使用TLS
方式,上传cert.pem
、key.pem
文件
docker安装netdata
Netdata 是一款 Linux 性能实时监测工具 ,其自身是一个高度优化的 Linux 守护进程,它为 Linux 系统,应用程序,SNMP 服务等提供实时的性能监测,并通过可视化图表信息呈现至web页面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 docker search netdata docker pull netdata/netdata docker run -d --name=netdata \ -p 19999:19999 \ -v netdataconfig:/etc/netdata \ -v netdatacache:/var/cache/netdata \ -v netdatalib:/var/lib/netdata \ -v /etc/passwd:/host/etc/passwd:ro \ -v /etc/group:/host/etc/group:ro \ -v /proc:/host/proc:ro \ -v /sys:/host/sys:ro \ -v /etc/os-release:/host/etc/os-release:ro \ --restart unless-stopped \ --cap-add SYS_PTRACE \ --security-opt apparmor=unconfined \ netdata/netdata docker ps -a
docker-compose安装
docker-compose项目是Docker 官方的开源项目,负责实现对Docker容器 集群的快速编排。它是一个定义和运行多容器的 docker应用工具。使用compose,你能通过YMAL文件配置你自己的服务,然后通过一个命令,你能使用配置文件 创建和运行所有的服务。重点可以启动多个容器!
方式一:通过pip3安装 1 2 3 4 5 6 7 8 yum -y install python-pip pip3 install --upgrade pip pip3 install docker-compose docker-compose version
方式二:离线安装 访问https://github.com/docker/compose/releases,下载 docker-compose-Linux-x86_64
,下载后重命名文件为 docker-compose
,可通过FTP工具上传到服务器/usr/local/bin/
目录下
1 2 3 4 sudo chmod +x /usr/local/bin/docker-compose docker-compose verison
docker-compose 安装 Nginx 创建nginx
目录,在目录下编辑 docker-compose.yml
文件
1 2 mkdir -p /opt/docker/nginx && cd /opt/docker/nginx vim docker-compose.yml
内容如下,version
版本号需要与docker-compose
版本对应,不然会报错
CentOS7中Docker文件挂载,容器中没有执行权限,故需添加参数
1 2 3 4 5 6 7 8 9 10 11 12 13 version: '3' services: nginx: image: nginx container_name: nginx restart: always ports: - '80:80' - '443:443' volumes: - ./conf/nginx.conf:/etc/nginx/nginx.conf - ./conf.d:/etc/nginx/conf.d - ./html:/usr/share/nginx/html
需要事先准备nginx.conf
文件在挂载目录./conf/nginx.conf
,否则会报试图将文件挂载至目录的错误(_因docker挂载目录文件,若挂载的宿主机目录不存在默认会创建一个新directory
,若原本想挂载的是 file
而docker默认创建的是directory
则会报该错误_)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 worker_processes 1 ; events { worker_connections 1024 ; }http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65 ; server { listen 80 ; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
需要注意 location
中 root
的配置,因为之前选择了挂载,所以需要填写为容器内的html
路径,否则会报404
错误
至此 nginx
目录结构为
1 2 3 4 5 6 |-- conf | `-- nginx.conf |-- conf.d |-- docker-compose.yml `-- html |`-- index.html
执行命令启动Nginx容器,通过 ip:80
访问是否启动成功
1 docker-compose up -d nginx
docker-compose 安装 MySQL 创建 MySQL
目录,在目录下编辑 docker-compose.yml
文件
1 2 mkdir -p /opt/docker/mysql && cd /opt/docker/mysql vim docker-compose.yml
内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 version: '3' services: mysql: image: mysql container_name: mysql-db command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci restart: always environment: MYSQL_ROOT_PASSWORD: root ports: - '3306:3306' volumes: - ./data/db:/var/lib/mysql - ./data/conf:/etc/mysql/conf.d
执行命令启动 MySQL
容器,查看是否启动成功
1 2 3 4 5 6 7 8 9 10 11 12 13 docker-compose up -d mysql docker exec -it mysql-db bash mysql -uroot -p你的密码 use mysql grant all privileges on *.* to 'root' @'%' ; alter user 'root' @'%' identified with mysql_native_password by '你的密码' ; flush privileges;
docker-compose 安装 kodbox 创建 MySQL
目录, 创建文件.env来设置环境变量(必须修改等号右边的值,形式如 MYSQL_USER=kodbox
,值不要包含&符号),这些在docker启动时会自动传入容器
1 2 mkdir -p /opt/docker/kodbox && cd /opt/docker/kodbox vim .env
1 2 3 4 MYSQL_ROOT_PASSWORD=root MYSQL_DATABASE=kodbox MYSQL_USER=kodbox MYSQL_PASSWORD=kodbox
在目录下创建 docker-compose.yml
文件
内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 version: '3.5' services: db: image: mariadb command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW restart: always environment: - "TZ=Asia/Shanghai" - "MYSQL_ROOT_PASSWORD" - "MYSQL_DATABASE" - "MYSQL_USER" - "MYSQL_PASSWORD" volumes: - "./data/mysql/db:/var/lib/mysql" - "./data/mysql/conf:/etc/mysql/conf.d" app: image: kodcloud/kodbox ports: - 5890 :80 links: - db - redis volumes: - "./site:/var/www/html" restart: always redis: image: redis:alpine environment: - "TZ=Asia/Shanghai" restart: always volumes: - ./data/redis/data:/data - ./data/redis/conf/redis.conf:/etc/redis/redis.conf
执行命令启动 kodbox
、mysql
、redis
三个容器,查看是否启动成功
启动成功后通过 IP:5890
访问网盘安装页面,在数据库配置页面修改将MySQL
和 Redis
修改如下即可正常访问网盘
docker-compose 安装 Onlyoffice 创建 Onlyoffice
目录,在目录下创建 docker-compose.yml
文件
1 2 mkdir -p /opt/docker/onlyoffice && cd /opt/docker/onlyoffice vim docker-compose.yml
内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 version: '3.5' services: onlyoffice: image: onlyoffice/documentserver container_name: onlyoffice restart: always ports: - '76531:80' volumes: - ./data/logs:/var/log/onlyoffice - ./data/data:/var/www/onlyoffice/Data - ./data/lib:/var/lib/onlyoffice - ./data/db:/var/lib/postgresql
执行命令启动 Onlyoffice
容器,查看是否启动成功