目录
Docker - 01 常用指令、参数配置速查表
Centos7 安装 Docker
阿里镜像安装
官方repo地址被墙,所以我用阿里
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo systemctl start docker
加速
国内镜像慢,所以我用阿里
sudo mkdir -p /etc/docker
sudo vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
命令速查表
常用度排序
镜像操作
功能 | 命令 |
---|---|
拉取镜像 | docker pull [镜像名称:版本] |
镜像列表 | docker images |
删除镜像 | docker rmi [镜像名称:版本] |
镜像操作记录 | docker history [镜像名称:版本] |
给镜像设置新的仓库 | docker tag [镜像名称:版本] [新镜像名称:新版本] |
查看镜像详细 | docker inspect [镜像名称:版本] |
搜索镜像 | docker search [关键字] |
仓库登录 | docker login |
docker tag 指令得到了一个新的,和原来的镜像一模一样的镜像。后续文谈到私仓非常有用。
容器操作
功能 | 命令 |
---|---|
启动容器并进入 | docker run -ti --name [容器名称] [镜像名称:版本] bash |
容器列表 | docker ps -a |
容器提交为新的镜像 | docker commit [容器名称] my_image:v1.0 |
容器后台运行 | docker run -d --name [容器名称] [镜像名称:版本] bash -c "echo hello world" |
容器结束后自动删除 | docker run --rm --name [容器名称] [镜像名称:版本] bash -c "echo hello world" |
删除容器 | docker rm [容器名称] |
进入容器 exec | docker exec -ti [容器名称] bash |
进入容器 attach | docker attach [容器名称] |
停止容器 | docker stop [容器名称] |
Docker 日志 | docker logs [容器名称] |
查看容器详细 | docker inspect [容器名称] |
查看容器最近一个进程 | docker top [容器名称] |
继续运行被停止的容器 | docker restart [容器名称] |
暂停一个容器进程 | docker pause [容器名称] |
取消暂停 | docker unpause [容器名称] |
终止容器 | docker kill [容器名称] |
端口映射 | docker run -ti --name [容器名称] -p 8080:80 [镜像名称:版本] bash |
容器互联 | docker run -ti --name [容器名称] --link [被互联容器名称]:[容器内名称] net:v1.0 bash |
复制容器文件到宿主 | docker cp [容器名称]:[容器内目录] . |
-
exec
与attach
区别
在 exec 里面执行 exit 命令,你只是关掉了 exec 命令新开的进程,而主进程依旧在运行,所以容器并不会停止
在 attach 里面运行 exit 命令,你实际是终止了主进程,所以容器也就随之被停止了
-
-p
配置
-p hostPort:containerPort 映射所有 IP 地址上的指定端口到容器内部
-p ip:hostPort:containerPort 映射指定 IP 地址上的指定端口到容器内部
-p ip::containerPort 映射指定 IP 地址上的任意端口到容器内部
内存限制
参数 | 简介 |
---|---|
-m, - -memory | 内存限制,格式:数字+单位,单位可以是b, k, m, g,最小4M |
-- -memory-swap | 内存和交换空间总大小限制,注意:必须比-m参数大 |
CPU限制
参数 | 简介 |
---|---|
-- -cpuset-cpus="" | 允许使用的CPU集 |
-c,- -cpu-shares=0 | CPU共享权值 |
-- -cpu-quota=0 | 限制CPU CFS配额,必须不小于1ms,即>=1000 |
cpu-period=0 | 限制CPU CFS调度周期,范围是100ms~1s,即[1000, 1000000] |
sudo docker run -ti --cpuset-cpus="1,3" --name cpuset [镜像名称:版本] bash
比如下面的指令指定容器进程可以在 CPU1 和 CPU3 上运行
数据卷
功能 | 命令 |
---|---|
创建一个卷 | docker run -ti --name [容器名称] -v /[数据卷名称] [镜像名称:版本] bash |
删除一个数据卷 | docker rm -v [数据卷名称] |
挂载宿主目录 | docker run -ti --name [容器名称] -v [宿主目录]:[容器内目录] [镜像名称:版本] bash |
数据卷容器 | docker run -ti -d -v /[数据卷名称] --name [数据卷容器名称] [镜像名称:版本] |
使用数据卷容器 | docker run -ti --volumes-from [数据卷容器名称] --name [新容器名称] [镜像名称:版本] bash |
清除所有 | docker volume prune |
备份数据卷 1 - 建立容器 | docker run -it --name vol_simple -v /data ubuntu /bin/bash |
备份数据卷 2 - 备份 | docker run --rm --vloumes-from vol_simple -v$(pwd):/backup ubuntu tar cvf /backup/data.tar /data |
恢复数据卷 1 - 建立目标容器 | docker run -it --name vol_bck -v /data ubuntu /bin/bash |
恢复数据卷 2 - 解压 | docker run --rm --volumes-from vol_bck -v $(pwd):/backup ubuntu tar xvf /backup/data.tar -C / |
备份数据卷: 指令启动了一个临时的容器,这个容器挂载了两个volume,第一个volume与要备份的volume共享,第二个volume将宿主机的当前目录挂载到容器的/backup下。容器运行后将要备份的内容(/data文件夹)备份到/backup/data.tar,然后删除容器,备份后的data.tar就留在了当前目录。恢复数据卷: 首先运行了一个新容器作为数据恢复的目标。第二行指令启动了一个临时容器,这个容器挂载了两个volume,第一个volume与要恢复的volume共享,第二个将宿主机的当前目录挂载到容器的/backup下。由于之前备份的data.tar在当前目录下,那么它在容器中的/backup也能访问到,容器启动后将这个存档文件中的/data恢复到跟目录下,然后删除容器,恢复后的数据在vol_bck的volume中了。
参考
© 会煮咖啡的猫咪
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。