docker镜像操作
docker run hello-world #运行hello-world镜像
- dockerclient客户端连接到了服务端(服务端是以一个守护进程的形式跑在操作系统里面的)restfulapi典型的C/s架构
- 由docker服务端的守护进程从docker hub上下载了镜像(服务端会先检查本地系统是否有此镜像)
- 服务端创建了一个新的容器,然后从拉取的这个镜像启动了一个容器,容器执行了脚本/可执行程序让我们可以查看/使用
- docker服务端把这些信息流(传递)返回到客户端并展示出来,( 展示在终端上)docker client 可以是多种形式,比如"docker"命令工具所在的终端
查看docker版本
docker -v
docker version
?搜索镜像-search
docker search nginx #搜索镜像nginx
docker search centos: 7 #搜索镜像centos:7
下载镜像-pull
docker pull 镜像名称
例如:docker pull nginx #下载nginx最新的镜像
?查看镜像列表
docker images——查看当前docker下的下载镜像信息
获取镜像信息
封装镜像的详细信息
docker inspect 镜像ID
?添加镜像标签
docker tag hello-world:latest hello-world:lamp
删除镜像?
若需要删除镜像需要先删除容器
docker rm 容器ID #删除容器
docker rmi 镜像ID #删除镜像
docker rmi 镜像标签 #删除镜像
docker rmi `docker images -q` #-q 列出镜像ID
镜像导出
docker save -o 文件名镜像名
示例:
docker save -o hello-world hello-world:lamp
?镜像导入
docker load < hello-world
容器操作
查询容器
docker ps -a
CONTAINER ID:容器ID
IMAGE:镜像版本
CRATED:创建的时间
STATUS:运行的时间
PORTS:暴露的端口
NAMES:名称(可定义)
创建容器
docker create -it nginx:latest /bin/bash
-i 让容器的标准输入保持打开
-t 分配一个伪终端
-d 后台守护进程的方式运行
?启动容器
docker start 容器id
启动一次性运行容器
docker run centos:7 /usr/bin/bash -c ls /
持续性运行浪费资源 -c:传递命令参数
停止容器
docker stop 容器ID
#状态码0:正常退出,非0值表示非正常退出,137表示主动停止退出
容器持续后台运行
docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello; done" #后台运行centos:7的容器
while true;do echo hello; done:代表给予一个死循环
进入容器
使用run
docker run -it nginx:latest /bin/bash #一次性的,退出则关闭
exec(容器必须为开启状态)
docker exec -it 容器ID /bin/bash
docker exec -it 容器ID /bin/bash
docker run -it:会创建前台进程,但是会在输入exit后终止进程。
docker attach:会通过连接stdin,连接到容器内输入输出流,会在输入exit后终止进程.
docker exec -it 会连接到容器,可以像SSH-样进入容器内部,进行操作,可以通过exit退出容器,不影响容器运行。
?退出容器
ctrl+d 或者 exit
容器导出
docker export 容器ID > 文件名
容器导入
生成镜像
docker import 导出的文件名(容器) 指定镜像名称
删除容器
docker rm 容器ID
docker rm -f 容器ID 强制删除容器
docker ps -a | awk '{print "docker rm "$1}' | bash 批量删除容器
for i in 'docker ps -a | grep -i exit | awk '{print $1}'`; do docker rm -f $i; done
批量删除"exit"状态的容器
docker四种网络模式
host模式 ? ? ? ?-net=host ? ? ? ? ? ? ? ? ?容器和宿主机共享Network namespaceo container模式 ? -net=container:NAME_or_ID ?多个容器共享一个Network namespace. none模式 ? ? ? ?-net=none容器有独立的Network,namespace,但并没有对其进行任何网络设置,如分配veth pair和网桥连接,配置IP等。 bridge模式 ? ? ?-net=bridge ? ? ? ? ? ? ? (默认为该模式) 以上不需要动手配置,真正需要配置的是自定义网络
|