docker

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 下的内容

原文地址:https://www.cnblogs.com/jkklearn/p/12246885.html