docker安装1404

本文详细介绍了Docker的安装与常见问题解决,包括错误代码(1)的修复、Docker版本检查、容器与镜像管理、端口动态绑定、数据卷使用及网络配置等核心操作。同时,提供了资源限制、自定义网络与固定IP设置的方法。

http://wiki.jikexueyuan.com/project/docker-technology-and-combat/pull.html

https://blog.youkuaiyun.com/chszs/article/details/47122005

apt-get -y install docker.io

运行报错E: Sub-process /usr/bin/dpkg returned an error code (1)

非常不乐意用了以下办法

sudo mv /var/lib/dpkg/info /var/lib/dpkg/info.bak            //现将info文件夹更名
sudo mkdir /var/lib/dpkg/info                                          //再新建一个新的info文件夹
sudo apt-get update
apt-get -f install docker.io
sudo mv /var/lib/dpkg/info.bak/* /var/lib/dpkg/info         //把以前的info文件夹重新改回名字
rm -rf /var/lib/dpkg/info.bak/

这个还是慎用,至少前两天装的ssh又需要重装,感觉有可能软件什么的都有问题了

http://yanue.net/post-123.html这里其他方法也可以参考,第一个是解决了,我是虚拟机,啥也没装比较适合,搞坏了不打紧

 

docker verison 发现

FATA[0000] Get http:///var/run/docker.sock/v1.18/version: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS? 

或者docker -d & 后面搞就docker -d这个不知道这一步应该没作用就crtl +c 了

docker service status 可以看见是docker stop/waiting 

docker servise start 就好了

docker@docker:~$ docker version
Client version: 1.6.2
Client API version: 1.18
Go version (client): go1.2.1
Git commit (client): 7c8fca2
OS/Arch (client): linux/amd64
Server version: 1.6.2
Server API version: 1.18
Go version (server): go1.2.1
Git commit (server): 7c8fca2
OS/Arch (server): linux/amd64

最终样子,也不需要搞什么软连接

docker pull ubuntu

现在可以看到在Bash Shell下建立Ubuntu容器是非常简单的,只需运行一行命令即可。
-i选项:让输入输出都在标准控制台进行
-t选项:分配一个tty

docker run -i -t ubuntu /bin/bash

删除所有none的镜像

docker rmi $(docker images -f "dangling=true" -q)

删除所有容器

docker rm $(docker ps -aq)

删除Docker中所有已停止的容器

方法一:

#显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID,

sudo docker ps -a|grep Exited|awk '{print $1}'

#查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器

sudo docker rm `docker ps -a|grep Exited|awk '{print $1}'`

方法二: 

#删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)

sudo docker rm $(sudo docker ps -a -q)

方法三:

#根据容器的状态,删除Exited状态的容器

sudo docker rm $(sudo docker ps -qf status=exited)

方法四:

#Docker 1.13版本以后,可以使用 docker containers prune 命令,删除孤立的容器。

sudo docker container prune

停止所有容器

docker stop $(docker ps -a -q)

二、使用iptables动态绑定端口

1、查看容器ip

docker inspect <container-name | id> | grep IPAddress

这一步后会输出容器的ip地址,端口绑定时会使用。

2、端口绑定

sudo iptables -t nat -A PREROUTING  -p tcp -m tcp --dport hostport -j DNAT --to-destination  containerip:port

举个例子,使用命令

sudo iptables -t nat -A PREROUTING  -p tcp -m tcp --dport 9030 -j DNAT --to-destination  172.22.0.2:9090

将容器的9090端口和宿主机的9030端口绑定了起来,其中172.22.0.2是容器的ip地址。

3、保存规则

sudo iptables-save

4、查看动态绑定的端口

 docker port <container-name | id> 不能查看使用iptables绑定的端口,要使用命令 iptables -t nat -nvL | grep container-ip 来查看。

数据卷

docker run -t -i -v /root/api:/root/api --name api ubuntu:14.04 /bin/bash
docker run -d -v /root/api:/root/api --name dbdata ubuntu:14.04
docker run -d -v /mnt/hgfs/workspace/docker:/root/chronos --name dbdata ubuntu:14.04
docker run -t -i --volumes-from dbdata --name chronos ubuntu /bin/bash
docker run -t -i --volumes-from dbdata --name chronos ubuntu:14.04 /bin/sh /root/chronos/run_test_fgs_docker.sh
docker run -t -i -p 8787:8787 --expose=8787 --env-file=env --volumes-from dbdata --name chronos ubuntu:14.04 /bin/sh /root/chronos/test_fgs_docker

iptables -t nat -A PREROUTING  -p tcp -m tcp --dport 9030 -j DNAT --to-destination  172.22.0.2:9090(容器)

docker run -d -m 10m -p 8787:8787 --expose=8787 --oom-kill-disable=true --net=host --env-file=env --volumes-from dbdata --name chronos ubuntu:14.04 sh -c 'cd /root/chr
onos/ && /root/chronos/test_fgs_docker'

 

docker设置固定ip地址

Docker安装后,默认会创建下面三种网络类型

$ docker network ls
NETWORK ID     NAME        DRIVER       SCOPE
9781b1f585ae    bridge       bridge       local
1252da701e55    host        host        local
237ea3d5cfbf    none        null        local

启动 Docker的时候,用 --network 参数,可以指定网络类型

docker run -itd --name test1 --network bridge --ip 172.17.0.10 centos:latest /bin/bash

bridge:桥接网络

默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了

none:无指定网络

使用 --network=none ,docker 容器就不会分配局域网的IP

host: 主机网络

使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。
例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。

创建自定义网络:(设置固定IP)

启动Docker容器的时候,使用默认的网络是不支持指派固定IP的,如下
docker run -itd --net bridge --ip 172.17.0.10 centos:latest /bin/bash
6eb1f228cf308d1c60db30093c126acbfd0cb21d76cb448c678bab0f1a7c0df6
docker: Error response from daemon: User specified IP address is supported on user defined networks only.

步骤1: 创建自定义网络

docker network create --subnet=172.18.0.0/16 mynetwork
➜ ~ docker network ls
NETWORK ID     NAME        DRIVER       SCOPE
9781b1f585ae    bridge       bridge       local
1252da701e55    host        host        local
4f11ae9c85de    mynetwork      bridge       local
237ea3d5cfbf    none        null        local

步骤2: 创建Docker容器

docker run -itd --name networkTest1 --net mynetwork --ip 172.18.0.2 centos:latest /bin/bash

容器资源限制

https://blog.youkuaiyun.com/candcplusplus/article/details/53728507

https://blog.youkuaiyun.com/horsefoot/article/details/51731543

容器数据卷

https://www.cnblogs.com/kevingrace/p/6238195.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值