一、镜像管理
1、搜索镜像
~]# docker search nginx #不加版本号默认搜索lates
~]# docker search nginx :1.12 # “:”后面加版本号,搜索指定版本
2、下载镜像
~]# docker pull centos #不加版本号默认下载lates
~]# docker pull nginx:1.12
3、查看本地镜像
~]# docker images
4、上传镜像
~]# docker push myweb:v1
REPOSITORY 镜像所属的仓库名称
TAG 镜像的版本号,默认是lates
IMAGE ID 镜像唯一标识ID
CREATED 镜像的创建时间
SIZE 镜像的大小
4、导出镜像
[root@docker1 ~]# docker save centos -o /opt/centos.tar.gz #方法一
[root@docker1 ~]# docker save centos > /opt/centos.tar.gz #方法二
[root@docker1 ~]# ll /opt/centos.tar.gz #查看镜像文件是否导出成功
[root@docker1 ~]# scp /opt/centos.tar.gz root@192.168.235.131:/usr/local/src/ #将该镜像包传另外一台宿主机上,备用于镜像导入
5、导入镜像
[root@docker2 ~]# docker load -i /usr/local/src/centos.tar.gz #方法一
[root@docker2 ~]# docker load > /usr/local/src/centos.tar.gz #方法二
[root@docker2 ~]# docker images #查看本地镜像情况,确认是否导入成功
6、删除镜像
~]# docker rmi centos
二、容器操作
1、查看容器
~]# docker ps #查看正在运行的容器
~]# docker ps -a #查看所有容器,包括已停止的容器
2、创建一个容器
docker run [选项参数] [镜像名称] [容器中执行的shell命令]
~]# docker run centos /bin/echo 'test' #创建容器并执行echo 'test',执行完成后退出容器
~]# docker run -it centos bash #创建容器并进入该容器,退出容器后容器停止运行
注:
-i 标准输入,从中断获取到输入信息;
-t 分配一个tty,连接标准输入的接口;
~]# docker run -d centos tail -f /var/log/anaconda/syslog
注:
-d 放该容器在当前宿主机的后台运行;
如果要创建一个可持续运行的容器需在 [容器中执行的shell命令] 执行可以一直执行的shell命令,如:tail -f /var/log/anaconda/syslog,否则当容器执行完该命令后就会退出该容器。
docker run -d --name log_test centos tail -f /var/log/anaconda/syslog
注:
--name 自定义容器名称
3、端口映射
3.1、端口映射命令执行如下:
~]# docker run -d -P nginx #映射一个随机端口
~]# docker run -d -p 81:80 nginx #指定映射端口
~]# docker run -d -p 192.168.235.131:82:80 nginx #指定映射端口到某IP
~]# docker run -d -p 192.168.235.131::80 nginx #随机映射端口到某IP
~]# docker run -d -p 192.168.235.131:83:80/udp nginx #指定协议,不指定默认为TCP
~]# docker run -d -p 84:80/udp -p 85:80/tcp nginx #指定多个协议
3.2、查看容器已映射的端口
4、查看容器的访问日志
~]# docker logs vigorous_allen #一次性查看
~]# docker logs -f vigorous_allen #追踪查看
5、删除容器
~]# docker rm -fv d33a7f58086f
注:
-f 强制删除
-v 删除容器的同时删除容器相关的文件信息
6、单次运行后删除
~]# docker run -it --rm --name delete_test centos
注:
--rm 退出容器后删除容器
7、容器的启动和关闭
~]# docker stop 4a8485ff1886 #容器关闭
~]# docker start 4a8485ff1886 #容器启动
8、进入正在运行的容器
8.1、docker attach命令
使用该命令,需要进入有shell环境的容器,所有操作都是同步的,使用exit退出容器后容器会关闭
~]# docker run -it centos bash #创建并进入一个容器
~]# docker attach cba6c7c67cb6 #从另外一个窗口进入该容器
8.2、docker exec命令
执行单次命令进入容器,exit退出后容器仍运行
~]# docker exec -it zealous_payne bash
8.3、nsenter命令
该命令需要通过PID号进入容器
~]# docker inspect -f "{{.State.Pid}}" 4a8485ff1886 #获取该容器在宿主机上的PID号
~]# nsenter -t 3253 -m -u -i -n -p #通过获取到PID进入容器
注:
-m 进入mount命令空间
-u 进入uts命令空间
-i 进入ipc命令空间
-n 进入net命令空间
-p 进入pid命令空间
将nsenter进入容器方式封装成脚本
~]# vim nsenter.sh #将命令封装成脚本
#!/bin/bash
docker_in(){
DOCKER_NAME=$1
PID=$(docker inspect -f "{{.State.Pid}}" ${DOCKER_NAME})
nsenter -t ${PID} -m -u -i -n -p
}
docker_in $1~]# sh nsenter.sh 4a8485ff1886 #测试脚本
9、宿主机与容器之间的文件复制
~]# docker cp 24086923c716:/xiexq_docker_test /opt #复制容器中的文件到宿主机/opt目录
~]# docker cp 8888.py test2_nginx:/ #复制宿主机文件到容器的/目录
如在执行docker cp命令过程中出现以下截图报错需要进行docker版本升级
Error response from daemon: error processing tar file: docker-tar: relocation error: /lib/x86_64-linux-gnu/libnss_files.so.2: symbol __libc_readline_unlocked, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference
: exit status 127
10、查看docker容器消耗宿主机的资源情况
~]# docker stats #执行结果如下图
三、其他
1、显示docker的详细信息,包括镜像及容器数
docker info