(一)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命令

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值