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都将挂载宿主机的同一个目录。
八.DockerFile1.关键字
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命令



