环境:
主机:装有centos7.2的物理机 I P:192.168.122.1 关闭防火墙 selinux状态为disabled
软件:docker-engine-1.10.3-1.el7.centos.x86_64.rpm
docker-engine-selinux-1.10.3-1.el7.centos.noarch.rpm
操作:
安装软件 yum install docker-engine-1.10.3-1.el7.centos.x86_64.rpm
docker-engine-selinux-1.10.3-1.el7.centos.noarch.rpm
启动 systemctl start docker
查看docker信息 docker version
导入docker镜像 docker load -i centos.tar
查看docker镜像 docker images
运行容器
1> docker run -it --name test rhel7 bash 在前台bash交互式运行
#####开启容器并进入交互式界面:ctrl+d 会直接关闭容器退出交互式界面 ctrl+p+q 退出交互式界面但不会关闭容器
2> docker run -d --name test1 nginx -d表示打入后台运行
3> docker run -d --name nginx -v index.html:/usr/share/ngin/html/index.html -p 8080:80 nginx 创建容器 -v 将本地的index.html 文件挂载到容器中 -p端口映射 将容器的80端口映射到物理机的8080
可以通过访问物理机的8080端口或容器的IP 来访问容器的nginx
4> docker create --name file -v /tmp/data1:/data1 -v /tmp/data2:/data2 ubuntu bash 添加卷容器 卷容器可以被调用在新建的容器上作与卷容器相同的挂载
5> docker run --rm --volumes-from file -v /tmp/backup:/backup ubuntu tar cf /backup/back.tar data1 创建一个容器,执行将data1打包到/backup/后 删除容器 --volumes-from 调用file容器的挂载 令新容器也有相同的挂载
6> docker run -it --name ubuntu --net host ubuntu bash 运行一个容器 --net表示指定容器使用网络为host 这样容器会跟物理机使用相同的网络信息 会开启相同的网络端口 但是会发生资源争抢
7> docker run -it --name vm1 --net none ubuntu bash 运行一个容器、网络信息为空 方便自定义配置
对容器vm1的网络配置如下:
ip link add name veth0 type veth peer name veth1 创建容器虚拟网络接口
brctl addif docker0 veth0 将一段接到本地docker0上
ip link set dev veth0 up
ip link set dev veth1 up 开启接口端状态
docker inspect -f ‘{{.State.Pid}}‘ vm1 过滤出容器vm1的Pid为5794
ip netns add test 添加网络命名空间test
ip netns list 查看列表
ln -s /proc/5794/ns/net /var/run/netns/5794做软连接
ip link set veth1 netns 5794 将虚拟网卡接口veth1添加到5794上
在容器中通过ip addr show可以看到 添加了一个设备veth1
ip netns exec 5794 ip addr add 172.17.0.10/24 dev veth1 在物理机上设置容器VM1的网络地址为172.17.0.10/24
ip netns exec 5794 ip link set veth1 up 启用设备veth1
在容器中查看
容器IP设置成功
docker常用操作:
Docker ps 查看当前正在运行的容器
Docker ps -a 查看所有容器 (包括为运行的容器)
Docker ps -q 查看容器ID
Docker stop/start test 关闭或打开容器test这里可以使用容器名或者容器ID都可以
Docker logs test 查看容器的日志
Docker attach test 进入容器
Docker rm test 删除容器
Docker stop `docker ps -aq` 停止所有容器
Docker rm `docker ps -aq` 删除所有容器 容器删除前需要先停止