docker 搭建环境记录(Centos 7)

docker安装与使用

yum -y install docker

启动docker

systemctl start docker

国外镜像网站

https://hub.docker.com/

国内镜像网站

https://docker.mirrors.ustc.edu.cn

修改镜像地址

vi /etc/docker/daemon.json

请在该配置文件中加入(没有该文件的话,请先建一个):

{

"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]

}

镜像操作

下载指定镜像

docker pull 镜像名字:TAG  


下载最新镜像(就是letest版本)

docker pull 镜像名字

查看已下载得镜像

docker images

删除镜像

docker rmi 镜像名字:tag  或者写id

删除所有镜像

docker rmi $(docker images -q)

导出、导入镜像

docker save repository:tag/imageId > /root/xx.tar.gz

docker load < /root/xx.tar.gz

docker save -o mynginx.tar nginx(要导出得镜像名字有多个就加tag nginx:1.16.0,这个模式不能用ID)

docker load -i mynginx.tar

-o 输出到的文件

执行后,运行 ls 命令即可看到打成的 tar 包

-i 输入的文件

执行后再次查看镜像,可以看到镜像已经恢复



容器

创建容器

模式1

docker run -i -t --name=my_ngx -v /本地/目录/:/docker/目录 -v /本地/目录1/:/docker/目录 --privileged=true -p 80:80 --net mynetwork --ip 172.18.0.2 nginx:1.16.0

模式2

docker run -di --name=my_ngx -v /本地/目录/:/docker/目录 -v /本地/目录1/:/docker/目录 --privileged=true -p 80:80 -p 80:80 --net mynetwork --ip 172.18.0.2 nginx:1.16.0

-i:表示运行容器

-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即

分配一个伪终端。

--name :为创建的容器命名。(“=”号写不写都行,我比较习惯写上,比较容易分辨)

-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使

用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后

共享到容器上。

-d:在 run 后面加上-d 参数,则会创建一个守护式容器在后台运行(这样创建容器后不会

自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。

-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p

做多个端口映射

容器操作

进入到容器

docker exec -it my_ngx /bin/bash

停止

docker stop my_ngx

运行

docker start my_ngx

删除

docker rm my_ngx

组合技

docker ps -a -q

ps:列出当前运行得容器

-a:列出所有创建得容器

-q:只显示id(效果是这样的,具体是不是这个说法……)

docker stop $(docker ps -a -q) 停止所有容器

另外有些容器 是启动之后应用直接运行得,有些需要进去启动,希望大家别被这个坑了。

关于docker如何修改已经创建得容器端口和目录:我修改过端口,目录没有试过具体操作是先查看容器的ID

到/var/lib/docker/containers/容器id/hostconfig.json


docker 搭建环境记录(Centos 7)_第1张图片

这个文件里面


可以看到,刚才我们启动容器的时候,配置的信息都在这。

我先停止了容器和docker,然后修改了这个文件,再启动。

端口是好使,映射目录好像不太好用。如果没有必要,容器直接删了重建。

如果需要在镜像内安装工具

直接运行下面得install出错,就执行update

apt-get update

我用到得几个工具

apt-get install procps  docker ps命令

apt-get install vim docker vi命令

apt-get install iputils-ping  ping命令

apt-get install lsof  看端口占用命令 lsof -i:8080

网络方面

如果直接启动的话 ,ip是动态的 ,如果你需要一个固定ip,那就需要自己创建一个网关了

docker network create --subnet=172.18.0.0/16 mynetwork

使用docker network ls 查看

docker 搭建环境记录(Centos 7)_第2张图片

这时候 固定ip的问题解决了 ,但是 还有个很坑的问题。他们之间网络是不通的……

此处省略很多心路历程……

简单的说就是因为网关的问题,docker 默认网关是172.17.0.1,这时候如果你想使用这个网关的docker容器们,网络互通的话,就需要修改docker 默认网关。

emm,按照这个来做基本就可以了,为了方便大家阅读我就直接粘过来了。https://blog.csdn.net/tomspcc/article/details/78423068

停止docker

service docker stop

 删除docker防火墙过滤规则

iptables -t nat -F POSTROUTING

 删除docker默认网关配置

ip link set dev docker0 down

ip addr del 172.17.0.1/16 dev docker0

 增加新的docker网关配置

ip addr add 172.18.0.1/16 dev docker0

ip link set dev docker0 up

检测是否配置成功,如果输出信息中有 172.18.0.1,则表明成功

ip addr show docker0

service docker start

验证docker防火墙过滤规则

iptables -t nat -L -n

上面的 ip后面的数字16,搜了一下

表示掩码是16个1。

11111111.11111111.0000000.0000000

这是2进制的掩码,转化为10进制掩码是255.255.0.0。

修改完之后route -n 显示的还是之前的网关,但是去到容器里面 已经可以相互ping通了

docker 搭建环境记录(Centos 7)_第3张图片

详细的网络方面可以看看这个https://www.jianshu.com/p/d84cdfe2ea86

你可能感兴趣的:(docker 搭建环境记录(Centos 7))