栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

(一)Docker基础

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(一)Docker基础

一.docker安装

1.yum安装gcc相关环境

yum -y install gcc 
yum -y install gcc-c++

2. 卸载旧版本

yum remove docker 
docker-client  
docker-client-latest  
docker-common  
docker-latest  
docker-latest-logrotate  
docker-logrotate  
docker-engine

 3.安装需要的软件包

yum install -y yum-utils

4. 设置镜像仓库

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

5. 更新yum软件包索引

yum makecache fast

6.安装 Docker CE

yum install docker-ce docker-ce-cli containerd.io

7. 启动 Docker

systemctl start docker

 8.测试

docker version
二.卸载docker
systemctl stop docker 
yum -y remove docker-ce docker-ce-cli containerd.io 
rm -rf /var/lib/docker
三.阿里云镜像加速

点此查看百度镜像加速配置

四.重要命令
1.容器启动命令
docker run -it #容器ID /bin/bash         #前台启动,执行后会打开容器内的命令界面
docker run -d #容器ID        #后台启动容器,不打开容器内的命令界面,有些容器启动后会自己挂掉
docker run -dit #容器ID      #后台方式启动容器,且保证容器进程启动后不会自己挂掉
2.退出容器命令界面
exit    #退出命令界面,且容器进程退出
快捷键 CTRL P+Q #退出命令界面,但容器进程不退出
3.进入容器命令界面
docker attach #容器ID       #从已存在的bash终端进入容器,exit退出会导致容器进程退出
docker exec -it #容器ID /bin/bash        #新开辟一个bash终端进入容器,exit退出不会导致容器进程退出
4.容器完整启动命令
docker run -dit -p 宿主端口:容器端口 --name 自定义容器名称 -v(挂载宿主目录) 宿主目录:容器目录 -e "环境变量" 镜像ID(或名称:tag)
使用-P时,则宿主端口和容器端口随机映射
5.从容器创建一个新的镜像
docker commit -m="提交的描述信息" -a="作者" 容器id 要创建的目标镜像名:[标签名]
五.常用命令

六.可视化容器管理界面(了解)
  • Portainer,一般用在单宿主机上
docker run -d -p 8088:9000  --restart=always -v /var/run/docker.sock:/var/run/docker.sock -- privileged=true portainer/portainer
  • Rancher(CI/CD再用这个)

 

#安装rancher-server 
docker run --name rancher-server -p 8000:8080 -v /etc/localtime:/etc/localtime:ro -d rancher/server 
#安装agent 
docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://39.101.191.131:8000/v1/scripts/D3DBD43F263109BB881F:1577750400000:7M0y BzCw4XSxJklD7TpysYIpI
 七.使用数据卷:
  • 匿名挂载
-v 容器内路径 
docker run -d -P --name nginx01 -v /etc/nginx nginx 
# 匿名挂载的缺点,就是不好维护,通常使用命令 docker volume维护 
docker volume ls
  • 具名挂载
-v 卷名:/容器内路径 
docker run -d -P --name nginx02 -v nginxconfig:/etc/nginx nginx 

# 查看挂载的路径 
[root@kuangshen ~]# docker volume inspect nginxconfig 
[ 
{ 
"CreatedAt": "2020-05-13T17:23:00+08:00", 
"Driver": "local", "Labels": null, 
"Mountpoint": "/var/lib/docker/volumes/nginxconfig/_data", 
"Name": "nginxconfig", 
"Options": null, "Scope": "local" 
} 
]
  • 改变文件的读写权限
# ro: readonly
# rw: readwrite
# 指定容器对我们挂载出来的内容的读写权限
docker run -d -P --name nginx02 -v nginxconfig:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v nginxconfig:/etc/nginx:rw nginx
  • 数据卷容器

        #--volumes -from 

        # docker run -it --name docker02 --volumes-from docker01 kuangshen/centos

        docker02会把docker01的挂载配置复制到自己这里,则docker01和docker02都将挂载宿主机的同一个目录。

八.DockerFile

1.关键字

2.案例:

3.通过DockerFile构建镜像

# docker build -f DockerFile文件 -t 镜像名称 .

 4.CMD与ENTRYPOINT的区别:

1.CMD允许出现多次(仅最后一次有效),但ENTRYPOINT只允许出现一次
2.CMD代表着docker run容器时的一种默认执行命令。
当docker run后面不接任何命令时,将执行最后一个CMD的命令
当docker run后面参数带命令时,将不执行DockerFile中CMD定义的命令,而执行docker run后面接的命令
3.当出现ENTRYPOINT时,CMD将无效,docker run启动时将只会认定ENTRYPOINT的命令
且docker run后的参数 将不被当做命令看待,而是当做ENTRYPOINT的命令参数看待

具体区别见这篇博客

九.docker0网络

在我们docker run启动一个容器(且不指定网络)时,docker会自动将容器加入到docker0这个网络下。且每启动一个容器,在宿主机和容器内执行ip addr时,将发现新增一对网卡

在同一个docker0网络下的容器是可以互相ping通的,但需要先获取各个容器的地址来ping

#docker exec -it tomcat02 ping 172.18.0.2

这时我们可以通过--link命令来定义新启动容器的host文件,实现域名ping

#docker run -d -P --name tomcat03 --link tomcat02 tomcat 此时tomcat03可以ping tomcat02,但02却不能平03,因为该命令只在tomcat03容器内定义了host文件 十.自定义网络 由于docker0网络,想通过域名来实现容器互联较为麻烦,因此自定义网络诞生了 1.创建自定义网络 # docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet -- volumes - from

 

 2.如何让两个网络内的容器互通呢,比如docker0和mynet ,使用docker network connect命令

 

 

 

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/291399.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号