1. 检查docker状态
# 查看docker daemon的运行状态
ps axf | grep docker
# 查看各个容器信息
docker info
# 查看容器配置信息
docker inspect 容器名
# 查看容器状态
docker ps
# 查看资源状态:CPU、内存
docker stats 容器名
docker top 容器名
# 查看容器日志
docker logs -f 容器名
# 查看挂载的卷
docker volume ls
# 查看挂载信息
docker volume inspect 卷名
# 拷贝文件到容器中--->docker cp ./start.sh a375:/home/mind/model
docker cp 主机文件目录 容器名:容器文件目录
2.启动docker
2.1方式一
# 启动docker
sudo service docker start
# 使docker开机启动
sudo chkconfig docker on
# 停止docker服务
sudo service docker stop
2.2 方式二
# 启动docker
sudo systemctl start docker
# 使docker开机启动
sudo systemctl enable docker
# 停止docker服务
sudo systemctl stop docker
2.3 重启容器服务
# 重新拉起服务
sudo systemctl daemon_reload
# 重启docker
sudo systemctl restart docker
2.4 建立docker用户组
# 建立docker用户组
sudo groupadd docker
# 将当前用户加入docker用户组
3.列出镜像
# 搜索镜像centos -s N参数可以指定仅显示评价为N星以上的镜像
docker search centos
# 根据仓库名列出镜像
docker images ubuntu
# 列出已经下载下来的镜像
docker images
# 列出的特定的某个镜像
docker images ubuntu:16.04
# 显示悬挂镜像
docker images -f dangling=true
# 拉取镜像
docker pull [Docker Registry地址]<仓库名>:<标签>
4.操作镜像
4.1 镜像基本操作
# 从dockerfile构建镜像
docker build -t 上下文路径/URL .
docker build -t nginx:v3 .
# 删除镜像
docker rmi 镜像1 镜像2
docker rmi centos # 删除本地镜像
docker rmi $(docker images -q redis) # 删除所有名为redis的镜像
docker rmi $(docker images -q -f before=mongo:3.2) # 删除所有在mongo:3.2之前的镜像
# 强制删除镜像
docker image rm -f 镜像id
# 查看容器的存储层的改动
docker diff 容器id/容器名
# 查看对webserver的改动
docker diff webserver
# 查看镜像nginx:latest的历史构建记录
docker history nginx:v2
# 上传/下载镜像
## 拉取nginx镜像,完整格式为:[username]/xxx:tag
docker pull cloudman6/httpd:v1
## 将镜像推送到Docker Hub,完整格式为:[username]/xxx:tag
docker push cloudman5/httpd:v1
# 标记镜像
## 将ba58这个镜像重命名为192.068.7.26:5000/test:v1
docker tag ba58 xxx.xxx.xxx.xxx:5000/test:v1
## 上传镜像到私有镜像仓库
docker push xxx.xxx.xxx.xxx:5000
## 用curl查看仓库中的镜像
curl https://xxx.xxx.xxx.xxx:5000/v1/search
# 到另一台机器上下载镜像
docker pull xxx.xxx.xxx.xxx:5000/test
4.2 导入/导出镜像文件
# 镜像保存为归档文件
## 将容器保存为镜像 ---> docker commit 容器名/容器id:标签
## 将webserver容器保存为镜像nginx:v2
docker commit --author "LiuLunNan<xxxxx@gmail.com>" --message "修改了默认网页" webserver nginx:v2
## 在一台机器上将镜像保存为归档文件
docker save alpine|gizp > alpine-latest.tar.gz
## 在另一台机器上加载镜像
docker load -i alpine-latest.tar.gz
# 导入镜像 --> docker import 文件|URL|-仓库名:标签
## 从rootfs压缩包导入,这条命令下载了xxxxx.tar.gz文件,并且作为根文件系统展开导入,并保存为镜像 openvz/ubuntu:14.04
docker import https://xxxxx.tar.gz openvz/ubuntu:14.04
5.容器操作
5.1 Docker容器操作
# 容器运行/启动/终止
## 运行容器
docker run -d ubuntu:14.04/bin/sh -c "while true;do echo hello world;sleep 1;done"
### docker启动一个ubuntu容器并在守护态运行
### 注:docker run的时候如果添加--rm标记,则容器在终止后会立即删除,--rm和-d参数不能同时使用
#### 启动一个nginx容器,容器终止即删除容器
docker run --name webserver --rm -p 80:80 nginx
#### 启动一个nginx容器,守护进程运行
docker run --name webserver -d -p 80:80 nginx
## 容器启动和终止
### 启动一个终止态的容器
docker start 容器id/容器名
### 终止一个运行中的容器
docker stop 容器id/容器名
### 重启一个容器
docker restart 容器id/容器名
## 删除容器
### 删除一个处于终止状态的容器
docker rm 容器名/容器id
docker rm trusting_newton
### 清理全部终止状态的容器
docker rm $(docker ps -a -q)
docker container prune -f
5.2 查看容器状态
# 查看容器信息
docker ps
# 查看所有容器信息,包括终止容器
docker ps -a
# 获取容器的日志信息
docker logs 容器名
# 在宿主机查看某个容器cpu、内存、网络、io情况
docker stats 容器名/容器id
# 在宿主机查看全部容器cpu、内存、网络、io情况
docker stats
5.3 进入容器与容器交换
# 进入容器与容器交换
## 交换式终端方式进入,注意:对容器来说,这将重启一个终端
docker exec -it 容器名/容器id /bin/bash
## 交互式终端方式进入webserver容器,并执行了bash命令
docker exec -it webserver bash
# 将当前终端attch到启动容器的终端
docker attach 容器名/容器id
# 以交互式方式创建容器
5.4 导入/导出容器
# 导出容器快照为tar包
## 导出容器为容器快照,ubuntu.tar
docker export 容器名/容器id > ubuntu.tar
# 从tar包快照导入为容器
## 从容器快照文件中再导入为镜像
cat ubuntu.tar|docker import - test/ubuntu:v1.0
# 指定URL或者某个目录,从容器快照文件中再导入为镜像
docker import https//:xxxx
6.Registry
# 登录公共Registry
## 登录docker.io
docker login -u username
7. 数据卷
# 使用bind mount挂载一个主机目录作为数据卷:主机的/src/webapp目录到容器的/opt/webapp目录
docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
# 使用docker managed volume挂载容器数据卷,将在主机/var/lib/docker/volumes/为容器建立一个数据卷目录,可以使用docker inspect web查看Mounts-Source的内容即为主机目录,即使删除容器,数据卷目录页不会被删除
docker run -d -P --name web -v /opt/webapp training/webapp python app.py
8. 容器访问控制
# 检查转发是否打开
sysctl net.ipv4.ip_forward
# 手动开启转发
sysctl -w net.ipv4.ip_forward=1
# 查看网桥和端口连接信息
brctl show
# 查看IP地址配置
ip addr
# 查看路由信息
ip route
# 查看路由信息
ifconfig 网卡名
网友评论