Csuper Blog

Csuper Blog

docker搭建及优化步骤
2020-09-13

2cf5e0fe9925bc31137974de55df8db1cb13704b.jpg

1、在安装docker之前,首先移除系统中已有的旧版本的docker


  yum -y remove docker           


2、安装yum-utils管理yum源


     (1)安装yum-utils

              yum install -y yum-utils          

  

    (2)新增yum源

             ##官网地址

     yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

     ##阿里云地址(推荐)

     yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo   

3、建立元数据缓存

      yum makecache fast      


4、安装最新版本的docker

      yum -y install docker-ce  


5、配置docker存储路径, 

vi /usr/lib/systemd/system/docker.service


ExecStart=/usr/bin/dockerd --graph=/data/docker

配置后要重启docker


6、配置docker加速

vi /etc/docker/daemon.json

加入下面的数据:

docker-cn镜像:

{

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

}


https://www.docker-cn.com/registry-mirror


如果你是腾讯云的服务器那么请加入:

{

  "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]

}

阿里云的服务器请查看:"registry-mirrors": ["https://wixr7yss.mirror.aliyuncs.com"]

wq保存退出:

执行命令生效:

systemctl daemon-reload

systemctl restart docker



7、安装docker-compose

cd /usr/local/bin/

wget https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-Linux-x86_64

rename docker-compose-Linux-x86_64 docker-compose docker-compose-Linux-x86_64

=============================================

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

=======================================

然后修改目录权限可执行,不然后续docker-compose up命令会报错:


chmod +x /usr/local/bin/docker-compose


 再通过docker-compose version命令进行查看


8、配置 Docker 镜像站

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io


9、设置开机启动 服务

开机启动docker:

systemctl enable docker.service


docker-compose启动: 

vim /etc/rc.d/rc.local/usr/local/bin/docker-compose -f /yml文件存放目录/docker-compose.yml up -d


docker-compose up -d


10、对已经创建的docker container设置开机自启动

docker update --restart=always <container ID 根据docker ps 显示出来的容器id>


11、docker常用命令操作

案例1、运行一个简单的容器,其中需要包含控制台管理

[root@localhost ~]# docker run -i -t centos7.21

这个容器一执行就会进入到默认的线程”/bin/bash”,直接进入控制台操作。当退出控制后后,容器会被终止。


案例2、运行一个在后台执行的容器,同时,还能用控制台管理

[root@localhost ~]# docker run -d -i -t centos7.21

 这个容器一执行,会自动执行默认的线程”/bin/bash”,但是不会让你马上进入控制台操作。将会在后台执行,用docker ps 可以看到当前运行的控制台。进入容器可是使用docker attach“Container name or id”。

 

案例3、运行一个带命令在后台不断执行的容器,不直接展示容器内部信息

[root@localhost ~]# docker run -d centos7.2 ping www.baidu.com1

 这个容器将永久在后台执行,因为ping这个线程不会停止。除非你停止了ping的线程。


案例4、运行一个在后台不断执行的容器,同时带有命令,程序被终止后还能重启继续跑,还能用控制台管理

[root@localhost ~]# docker run -d --restart=always centos7.2  ping www.baidu.com1

 这个容器将永久在后台执行,因为ping这个线程不会停止。如果你把ping这个线程终止了,那么容器会重启继续执行ping功能

案例5、我们需要为容器指定一个名称

[root@localhost ~]# docker run -d --name=server-db centos7.2 /usr/bin/mysql_safe -d1

 这时候我们这个容器的名称为server-db,同时激活了数据库mysql的后台线程,让它不断的跑,这时候我们的容器也不会被关闭。


案例6、我们需要让server-http容器连接server-db容器


[root@localhost ~]#docker run -d --name=server-http --link=server-db  centos7.2 /usr/bin/httpd --DFOREGROUND1

这时候,我们执行了apache的服务器让它不断的在后台执行,同时,在php里配置mysql的服务器名称为”server-db”,直接用server-db命名就可以了。不需要输入ip地址之类的。我们的server-http指定连接了server-db。server-db在server-http里会被当做一个DNS解析来获取相应的连接ip。


案例7、我们要将server-db,server-http的端口暴露出去,让大家访问

[root@localhost ~]#docker run -d --name=server-db -p 3306:3306 centos6.8-mysql /usr/bin/mysql_safe –d  1

这时候我们指定了服务器宿主机的3306端口映射到容器的3306端口,暴露出去。

[root@localhost ~]#docker run -d --name=server-http --link=server-db  -p 8080:80centos6.8-httpd /usr/bin/httpd --DFOREGROUND1

这时候我们指定了服务器宿主机的8080端口映射到容器80端口,暴露出去。


案例8、我们要将宿主机的数据库目录/server/mysql-data挂载到server-db上

[root@localhost ~]#docker run -d --name=server-db -p 3306:3306 -v /server/mysql-data:/mysql-data centos6.8-mysql /usr/bin/mysql_safe –d  1

这时候,你会发现,在server-db根目录下你会发现有一个新的文件夹mysql-data,同时里面的文件内容和宿主机下/server/mysql-data一样。


案例9、我们希望一个容器在它的进程结束后,立马自动删除。

[root@localhost ~]# docker run -ti --rm centos7.21

这时候我们进入了容器的控制台,当我们在容器内部exit退出控制台的时候,容器将被终止,同时自动删除。



12、

查看 docker端口映射占用情况

netstat -nlp |grep docker-proxy|awk '{print $4}'|sort


13、Docker修改IP地址方法

查看Docker IP:    ifconfig docker0


修改IP地址 [切勿与宿主机同网段]

vi /etc/docker/daemon.json

增加以下内容()

{ 

"registry-mirrors": [

     "https://docs.docker.com"

  ], 

  

"bip": "172.17.10.1/16"

}


重启Docker服务

service docker restart


docker监控

docker stats


识别Docker容器的状态

docker ps –a

docker pull 拉取或者更新指定镜像
docker push 将镜像推送至远程仓库
docker rm 删除容器
docker rmi 删除镜像
docker images 列出所有镜像
docker ps 列出所有容器

docker cp 命令用于容器与主机之间的数据拷贝
主机到容器:
docker cp /www 96f7f14e99ab:/www/
容器到主机:
docker cp 96f7f14e99ab:/www/tmp/

docker镜像内的文件互相拷贝1、将本地文件拷贝到docker 镜像内

 docker cp 本地路径 容器Id或name:容器目录

 docker cp /Users/howey/Documents/apache-maven-3.5.2/ containername:/opt
 

 2、将docker内文件拷贝到本地文件夹内

  docker cp 容器Id或name:本地路径 镜像路径

  docker cp containername:/Users/howey/Documents/apache-maven-3.5.2 /opt/