docker info 可以查看docker 的详细信息,版本/容器数/镜像数/仓库地址等
[root@localhost home]# docker info Containers: 4 Running: 3 Paused: 0 Stopped: 1 Images: 4 Server Version: 1.13.1 Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Native Overlay Diff: true Logging Driver: journald Cgroup Driver: systemd Plugins: Volume: local Network: bridge host macvlan null overlay Swarm: inactive Runtimes: docker-runc runc Default Runtime: docker-runc Init Binary: /usr/libexec/docker/docker-init-current containerd version: (expected: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1) runc version: 9c3c5f853ebf0ffac0d087e94daef462133b69c7 (expected: 9df8b306d01f59d3a8029be411de015b7304dd8f) init version: fec3683b971d9c3ef73f284f176672c44b448662 (expected: 949e6facb77383876aeff8a6944dde66b3089574) Security Options: seccomp WARNING: You're not using the default seccomp profile Profile: /etc/docker/seccomp.json selinux Kernel Version: 3.10.0-1062.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 Number of Docker Hooks: 3 CPUs: 1 Total Memory: 991 MiB Name: localhost.localdomain ID: P733:VG7D:QFFQ:DKM4:BIR7:IR3O:GBON:N6V4:3LJ4:5LAO:ZSR4:7JOV Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled Experimental: false Insecure Registries: 127.0.0.0/8 Registry Mirrors: registry.cn-hangzhou.aliyuncs.com Live Restore Enabled: false Registries: docker.io (secure)
每个容器有相应的配置,如果要查看配置
docker inspect containerid 可以查看 (docker inspect)可以查看 镜像或者 容器的元数据
容器对应的配置文件在这里
/var/lib/docker/containers/CONTAINERID/config.v2.json
如果要修改配置,可以修改后重启docker来生效
1 获取镜像
docker pull xxx
获取镜像中默认仓库地址 是docer官方 hub
如果要指定地址 docker pull 可以指定具体仓库地址
docker pull registry.cn-hangzhou.aliyuncs.com/ubuntu-14-04/ubuntu14.04
列出本地已下载的镜像
docker images
docker image ls
删除镜像
docker rmi imageid
容器有修改后更新镜像
docker commit -m="updated hs" -a="zuozhe" 915c1ead02d9 test/ubuntu
-m 是提交的描述信息
-a 是作者
915c1ead02d9 是容器的id
test/ubuntu 指定要创建的目标镜像名
2 启动容器
docker run --name kang -it ubuntu /bin/bash
docker run --name kang -d ef3ecf68e1e2 /bin/bash
-i 交互式操作
-t 终端操作
-d 后台daemon 运行
3 进入容器
docker exec -it 243c32535da7 /bin/bash
4 查看各个容器
docker container ls 运行态容器
docker container ls -a 终止态容器
docker ps -a 查看所有容器
docker ps -n 5 查看最近创建的5个容器
docker ps -a -q 只列出容器id
5 导出容器
docker export containerid > ubn.tar
导入容器
cat ubn.tar | docker import - test/ubuntu
或者通过制定URL来导入
docker import http://192.168.124.88:8000/ubn.tar test/ubuntu2
docker save -o u3.tar nginx:latest
docker load --input u3.tar
用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,
也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历 史记录和元数据信息
(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,
体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。
docker save和docker export的区别
对于Docker Save方法,会保存该镜像的所有历史记录
对于Docker Export 方法,不会保留历史记录,即没有commit历史
docker save保存的是镜像(image),docker export保存的是容器(container);
docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;
docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。
6 删除清理容器
docker rm -f contanerid
docker container rm -f contanerid
docker container prune 清理掉所有处于终止状态的容器
主机与容器之间 共享数据/磁盘
数据卷 方式
数据卷可以给一个或者多个容器使用的特殊目录,
可以在容器之间共享或重用
对数据卷的修改会立即生效
对数据卷的更新不会影响镜像的使用
数据卷会默认一直存在,及时容器被删除。
创建数据卷
docker volume create myvol
删除数据卷
docker volume rm myvol
查看数据卷
docker volume ls
注意 centos 7 在操作挂载数据时 setenforce 0 将selinux 禁用,否则挂载的数据将没有权限访问
创建容器时挂载数据卷
docker run -itd --name kang3 -v myvol:/web 37ef85ceaa9e /bin/bash
注意挂载对象不能是根目录 /
docker inspect containerid 在 Mounts 部分会看到具体挂载信息
"Mounts": [ { "Type": "volume", "Name": "myvol", "Source": "/var/lib/docker/volumes/myvol/_data", "Destination": "/web", "Driver": "local", "Mode": "z", "RW": true, "Propagation": "" } ],
多个容器共享一个数据卷时候,一个容器内修改数据卷,另一个容器也会立即看到修改。
挂载主机本地目录方式 mount
将本地的/home/test 目录 挂载到 容器的 /testdir目录中
docker run -itd -P --name kang4 -v /home/test:/testdir 37ef85ceaa9e /bin/bash
docker inspect containerid/name 中的Mounts可以看到 挂载信息
注意与数据卷的挂载方式不同,这里的type 是 bind
"Mounts": [ { "Type": "bind", "Source": "/home/test", "Destination": "/testdir", "Mode": "", "RW": true, "Propagation": "rprivate" } ],
挂载一个文件
docker run -itd --name kang1 -v /root/1.sh:/root/2.sh 37ef85ceaa9e /bin/bash
实践1
docekr 安装nginx
docker pull nginx docker run --name nginx2 -p 80:80 -v /home/test:/usr/share/nginx/html/ -d 2073e0bcb60e
进入容器中可以看到 nginx 的web目录是 /usr/share/nginx/html/
挂载本地目录 /home/test 到 web目录, 映射主机端口 80 到 容器端口80 http 访问ip ,返回信息就是 /home/test 下的内容