一、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 \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5.更新yum软件包索引
yum makecache fase
6.安装docker ce
yum install docker-ce docker-ce-cli containerd.io
7.启动docker
systemctl start docker
8.测试命令
docker version
docker run hello-world
docker images
9.卸载
systemctl stop docker
yum -y remove docker-ce docker-ce-cli containerd.io
re -rf /var/lib/docker
10.配置镜像加速
mkdir -p /etc/docker
tee /ect/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://qiyb9988.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
二、Docker操作
基本操作
1.移除所有镜像
docker rm -f $(docker ps -qa)
2.查看镜像
docker images
3.运行docker
docker run -d -P --name [别名] [images名称]
4.查看运行的容器
docker ps
5.列出所有的容器 ID
docker ps -aq
6.停止所有的容器
docker stop $(docker ps -aq)
7.删除所有的容器
docker rm $(docker ps -aq)
8.删除所有的镜像
docker rmi $(docker images -q)
a.删除指定容器
docker rm -f <containerid>
b.删除未启动成功的容器
docker rm $(docker ps -a|grep Created|awk '{print $1}')
或者
docker rm $(docker ps -qf status=created)
c.删除退出状态的容器
docker rm $(docker ps -a|grep Exited|awk '{print $1}')
或者
docker rm $(docker ps -qf status=exited)
d.删除所有未运行的容器
#正在运行的删除不了,所有未运行的都被删除了
docker rm $(docker ps -a -q)
或者
#Docker 1.13版本以后,可以使用 docker containers prune 命令,删除孤立的容器
docker container prune
docker run [可选参数] image
-d 容器名称
-p 指定容器端口号(主机端口号:容器端口号)
-it 使用交互方式运行,进入容器查看内容
-P 随机指定端口
--name="NAME" 容器名称 tomcat01 tomcat02 用来区分容器
9.查看日志
docker logs -tf --tail 行数 容器id
10.查看容器中的pid
docker top 容器ID
11.查看容器信息
docker inspect 容器ID
12.进入当前正在运行的容器,修改一些配置
docker exec -it 容器ID bashShell #方式1,进入容器后,开启一个新的终端,可以在里面操作
docker attach 容器ID #方式2,正在执行当前的代码,不会启动新的进程
13.从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的的主机路径
14.commit镜像,把已有镜像和自己的操作打包成新的镜像,保存当前状态
docker commit -m="提交描述信息" -a="作者" 容器id 目标镜像名:[TAG]
15.数据卷
# 容器数据卷挂载,容器在就可以,是双向绑定
# 容器删除后,数据还在
docker run -it -v 本地目录:容器内目录
# 匿名挂载,没有名字
docker run -d -P --name 别名 -v 容器内目录 镜像名
docker run -d -P --name nginx01 -v /etc/nginx nginx
# 具名挂载
docker run -d -P --name 别名 -v 卷名:容器内目录 镜像名
#查看所有卷信息
docker volume ls
# 查看对应路径
docker inspect 卷名
-v 容器内路径:ro rw 读写权限
ro 只读 ,只能通过宿主机改变,内部无法操作
rw 可读可写
# 容器间相互共享,容器数据卷
--volumes-from
可以删除原容器内文件,其余挂载容器可以依旧访问(备份机制),拷贝的概念
容器之间配置信息传递,数据卷容易的生命周期一直持续到没有容器使用为止
但是一旦持久化到本地,本地的数据不会删除的
自定义网络
1.查看网络
docker network ls
2.创建网络
# --gateway 网关
# --subnet 子网掩码 192.168.0.0/16 从192.168.0.2开始~192.168.255.255
# --driver 连接方式 bridge 桥接
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
3.查看自己创建的网络
docker network insepct mynet
4.启动容器
# --net 使用哪个网络
docker run -d -P tomcat01 --net mynet tomcat
5.容器之间互ping
# 容器之间互ping,不用--link可以ping名字
docker exec -it tomcat-net-01 ping tomcat-net-02
平时使用自定义网络 好处:
redis - 不同的集群使用不同的网络,保证集群是安全和健康的
mysql - 不同的集群使用不同的网络,保证集群是安全和健康的
6.网络连通(容器和网络连通)
#容器连接另个网络上,连通之后放到了mynet的网络下,相当于一个容器两个ip地址
docker network connect mynet tomcat01