官方repo地址被墙,因此我用阿里html
# 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
国内镜像慢,因此我用阿里linux
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
功能 | 命令 |
---|---|
拉取镜像 | 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参数大 |
参数 | 简介 |
---|---|
-- -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中了。json
© 会煮咖啡的猫咪ubuntu