docker常用命令

容器使用

官方可用容器地址

dockerhub

docker 命令

1
2
3
4
5
6
7
8
9
10
11
# 载入镜像文件
docker pull nginx

# 启动容器
docker run -itd --name ubuntu-test ubuntu /bin/bash
# -i: 交互式操作。
# -t: 终端。
# -d: 参数默认不会进入容器,容器启动后会进入后台
# --name: 设置容器名字为ubuntu-test
# ubuntu: ubuntu 镜像。
# /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

容器的查看/关闭/停止

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看所有的容器
docker ps -a

# 重启应用
docker restart 容器id

# 关闭容器
docker kill 容器id

# 启动容器
docker start 容器id

# 停止容器
docker stop 容器id

复制本地文件到容器目录

1
docker cp /usr/local/vendor.js  容器id:/usr/src/app/_site

进入容器

1
2
3
4
5
6
7
8
9
10
11
# 进入了容器,并且退出不会导致容器停止
docker exec -it 容器id /bin/bash

# 导出容器快照到本地文件
docker export 容器id > ubuntu.tar

# 导入容器快照
cat docker/ubuntu.tar | docker import - test/ubuntu:v1

# 此外,也可以指定url来导入
docker import http://example.com/image.tgz example/imagerepo

删除容器

1
docker rm -f 容器id

镜像使用

列出镜像列表

1
2
3
4
5
6
7
8
9
10
11
12
docker images

docker run -t -i ubuntu:15.10 /bin/bash

# 获取指定版本的镜像
docker pull ubuntu:13.10

# 查找镜像
docker search httpd

# 删除镜像
docker rmi hello-world

例子:docker创建mongo本地数据目录和配置文件

1
2
3
4
5
6
7
8
9
10
11
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
storage:
dbPath: /data/db
net:
port: 27037
bindIp: 0.0.0.0
#security:
#authorization: enabled
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
docker run -itd --name attack-i-mongo  -v /Users/attacki/mongo:/data/db -v /Users/attacki/mongo/db_config/mongo.conf:/data/configdb/mongo.conf -p 27037:27037 -d mongo -f /data/configdb/mongo.conf

# -v /Users/zhangzhi/mongodb:/data/db
# 宿主机 /Users/attacki/mongo 数据库目录
# 映射到容器 /data/db 目录

# -v /Users/attacki/mongo/db_config/mongo.conf:/data/configdb/mongo.conf
# 宿主机mongodb配置文件 /Users/attacki/mongo/db_config/mongo.conf
# 映射到容器 /data/configdb/mongo.conf

# -p 27037:27037 容器的27037端口,映射到宿主机的27037端口

# 进入运行容器的终端
docker exec -it attack-i-mongo mongo --host 127.0.0.1 --port 27037 admin

# 使用管理员
use admin

# 创建用户
db.createUser({user:'root',pwd:'root',roles:['root']})
db.createUser({ user: 'admin', pwd: 'admin', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
# Successfully added user: {
# "user" : "admin",
# "roles" : [
# {
# "role" : "userAdminAnyDatabase",
# "db" : "admin"
# }
# ]
# }

# 授权admin
db.auth('admin','admin')
# 1

# 添加数据库操作员
db.createUser({ user: "attack-i", pwd: "attack-i", roles: [ { role: "readWrite", db: "attack-i" } ] });

# nodejs链接示例: mongodb://admin:admin@localhost:27037/attack-i?authSource=admin