使用yum命令在线安装
yum install docker
安装后查看Docker版本 docker -v
启动docker:systemctl start docker
停止docker:systemctl stop docker
重启docker:systemctl restart docker
查看docker状态:systemctl status docker
开机启动:systemctl enable docker
搜索镜像
docker search 镜像名称
命令拉取centos7:docker pull centos:7
docker rmi $IMAGE_ID:删除指定镜像
docker rmi `docker images -q`:删除所有镜像
查看正在运行容器:
docker ps
查看所有的容器(启动过的历史容器):
docker ps –a
查看最后一次运行的容器:
docker ps –l
查看停止的容器:
docker ps -f status=exited
创建一个交互式容器并取名为mycentos
docker run -it --name=mycentos centos:7 /bin/bash
创建一个守护式容器:如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。命令如下(容器名称不能重复):
docker run -di --name=mycentos2 centos:7
登录守护式容器方式:
docker exec -it container_name (或者 container_id) /bin/bash(exit退出时,容器不会停止)
停止正在运行的容器:docker stop $CONTAINER_NAME/ID
启动已运行过的容器:docker start $CONTAINER_NAME/ID
将文件拷贝到容器内可以使用cp命令
docker cp 需要拷贝的文件或目录 容器名称:容器目录
将文件从容器内拷贝出来
docker cp 容器名称:容器目录 需要拷贝的文件或目录
目录挂载
创建容器 添加-v参数 后边为 宿主机目录:容器目录
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos2 centos:7
多级的目录,可能会出现权限不足的提示。因为CentOS7中的安全模块selinux把权限禁掉了,需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题
查看容器IP地址
docker inspect mycentos2
删除指定的容器:
docker rm $CONTAINER_ID/NAME
只能删除停止的容器
删除所有容器:docker rm `docker ps -a -q`
MySQL部署
拉取MySQL镜像
docker pull mysql
创建MySQL容器
docker run -di --name my_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
-p 代表端口映射,格式为 宿主机映射端口:容器运行端口
-e 代表添加环境变量 MYSQL_ROOT_PASSWORD是root用户的登陆密码
进入MySQL容器,登陆MySQL
进入mysql容器
docker exec -it my_mysql /bin/bash
登陆mysql
mysql -u root -p
查看容器运行的各种数据
docker inspect my_mysql
Redis部署
拉取Redis镜像
docker pull redis
创建Redis容器
docker run -di --name=my_redis -p 6379:6379 redis
客户端测试
window版本redis测试
redis-cli -h ip地址
//下载镜像
docker pull gogs/gogs
// 创建容器
docker run -d --name=gogs -p 10022:22 -p 3000:3000 -v /var/gogsdata:/data gogs/gogs
http://192.168.25.135:3000
MongoDB安装
docker pull mongo:3.4.1
# 启用认证
docker run --name mongodb -p 27017:27017 -d mongo:3.4.1 --auth
//进入
docker exec -it $IMAGE_ID mongo admin
// 创建一个 admin 管理员账号:
> use admin switched to db admin > db.createUser({user:"admin",pwd:"password",roles:["root"]}) Successfully added user: { "user" : "admin", "roles" : [ "root" ] }
//退出进入后对 admin 进行身份认证:
> db.auth("admin", "password")
//创建 用户、密码和数据库:
> use test1 switched to db test1 > db.createUser({user: "fly", pwd: "fly", roles: [{ role: "dbOwner", db: "test1" }]}) # 创建用户fly,设置密码fly,设置角色dbOwner
//查看系统用户
> use admin switched to db admin > db.system.users.find() # 显示当前系统用户
// 删除用户
1.切换admin ,删除用户fly ,删除失败
> use admin switched to db admin > db.dropUser("fly") false
2.切换fly ,删除用户fly,删除成功 > use fly switched to db flowpp > db.dropUser("fly") true
//切换数据库
use app
// 添加数据
db.test.save({name:"123123"});
远程连接的开启
docker exec -it $IMAGE_ID /bin/bash
注:如果出现
OCI runtime exec failed: exec failed: container_linux.go:345: starting container process caused "exec: "/bin/bash": stat /bin/bash: no such file or directory": unknown 这样的错误,是我们docker镜像中的/bin/bash文件并不存在,可能存在的是/bin/sh文件,使用
docker exec -it $IMAGE_ID /bin/sh
//更新源 apt-get update
//安装 vim apt-get install vim
//修改 mongo 配置文件 vim /etc/mongod.conf.orig
MongoDB role 类型
- 数据库用户角色(Database User Roles)
read:授予User只读数据的权限
readWrite:授予User读写数据的权限
- 数据库管理角色(Database Administration Roles):
dbAdmin:在当前dB中执行管理操作
dbOwner:在当前DB中执行任意操作
userAdmin:在当前DB中管理User
- 备份和还原角色(Backup and Restoration Roles):
backup
restore
- 跨库角色(All-Database Roles):
readAnyDatabase:授予在所有数据库上读取数据的权限
readWriteAnyDatabase:授予在所有数据库上读写数据的权限
userAdminAnyDatabase:授予在所有数据库上管理User的权限
dbAdminAnyDatabase:授予管理所有数据库的权限
- 集群管理角色(Cluster Administration Roles):
clusterAdmin:授予管理集群的最高权限
clusterManager:授予管理和监控集群的权限,A user with this role can access the config and local databases, which are used in sharding and replication, respectively.
clusterMonitor:授予监控集群的权限,对监控工具具有readonly的权限
hostManager:管理Server