Docker安装及常用环境部署
技术背景
Docker 是一个用于开发、部署和运行应用程序的开源平台,它使用容器化技术将应用及其依赖项打包成一个独立的容器,实现了应用的快速部署和隔离运行。在不同的项目中,我们可能需要部署各种不同的环境,如数据库、缓存等,使用 Docker 可以方便地管理这些环境。
实现步骤
卸载 Docker
不同的 Linux 发行版卸载 Docker 的命令不同:
1
| sudo apt-get remove docker docker-engine
|
1 2 3 4 5
| sudo yum remove docker \ docker-common \ container-selinux \ docker-selinux \ docker-engine
|
1 2 3 4 5
| sudo dnf remove docker \ docker-common \ container-selinux \ docker-selinux \ docker-engine
|
卸载完成后,清除旧文件:
在 Linux 上安装 Docker
1
| curl -sSL https://get.daocloud.io/docker | sh
|
安装完成后,启动 Docker:
1
| sudo systemctl start docker
|
安装 Docker Compose
1 2
| curl -L https://get.daocloud.io/docker/compose/releases/download/v2.5.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
|
常用命令
1 2 3 4 5 6
| docker container update --restart=always 容器名字
systemctl restart docker
systemctl enable docker
|
部署常用环境
MySQL
- 创建
my.cnf
配置文件:
1 2 3 4 5 6 7 8
| [mysqld] user=mysql default-time_zone = '+8:00' character-set-server=utf8 [client] default-character-set=utf8 [mysql] default-character-set=utf8
|
- 安装 MySQL:
1 2 3 4 5
| docker run --restart=always -p 3306:3306 --name mysql57 \ -v /home/docker/mysql/config:/etc/mysql/conf.d \ -v /home/docker/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:5.7
|
- 进入 MySQL 命令行:
1
| docker exec -t -i c3e mysql -uroot -p
|
MongoDB
- 启动 MongoDB 容器:
1
| docker run --restart=always -itd --name mongo -p 27017:27017 mongo --auth
|
- 配置 MongoDB 用户:
1 2 3 4 5 6
| docker exec -it mongo mongo admin
db.createUser({ user:'root',pwd:'password',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
db.auth('root', 'password')
|
Redis
1 2 3 4
| docker run --restart=always -p 6379:6379 --name redis -d redis:latest
docker run -v /myredis/conf:/usr/local/etc/redis --name myredis redis redis-server /usr/local/etc/redis/redis.conf
|
HDFS
- 创建
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
| version: "2"
services: namenode: image: singularities/hadoop command: start-hadoop namenode hostname: namenode environment: HDFS_USER: root ports: - "8020:8020" - "14000:14000" - "50070:50070" - "50075:50075" - "10020:10020" - "13562:13562" - "19888:19888" datanode: image: singularities/hadoop command: start-hadoop datanode namenode environment: HDFS_USER: hdfsuser links: - namenode
|
- 使用 Docker Compose 启动:
Neo4j
1 2
| docker run -p7474:7474 -p7687:7687 -e NEO4J_AUTH=neo4j/password neo4j
|
ES
1
| docker run --name es7_12_0 -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.12.0
|
核心代码
上述实现步骤中的代码即为核心代码,包含了 Docker 安装、卸载、常用命令以及各种常用环境的部署命令。
最佳实践
- 在部署环境时,建议使用
--restart=always
参数,确保容器在系统重启后自动启动。 - 对于有数据存储需求的环境,如 MySQL、MongoDB 等,使用数据卷(
-v
参数)将数据挂载到宿主机,避免数据丢失。
常见问题
- Docker 安装失败:检查网络连接是否正常,或者尝试更换安装源。
- 容器启动失败:查看容器日志(
docker logs 容器名
),根据日志信息排查问题,可能是端口冲突、配置文件错误等原因。 - 环境无法访问:检查端口映射是否正确,防火墙是否开放了相应的端口。