一、安装docker

依次执行:
 

sudo dnf remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker

1、下载相关

先搜索:docker search nginx

在拉取:docker pull nginx

然后查看镜像:docker images

删除镜像:docker rmi

2、启动容器相关

查看容器:docker ps -a

删除容器前首先要停止容器,然后执行docker rm -f $(docker ps -aq)

进入容器:docker exec -it mynginx  /bin/bash交互模式

后台启动:docker run

        细节:docker -d表示后台启动

                                --name nginxx 起个别名

                                -p 80:80

        必须使用端口映射,要不然只有在自己的虚拟主机中才会有,也就是自己的容器中才能使用;加-p参数

3、存储

        因为每一个镜像都是相互隔离的,每一个镜像的数据都存储在自己的镜像中,所以镜像删除就会删除所有的镜像里的数据;

        而且容器中的文件修改不容易,每一个容器都是一个虚拟机但是此虚拟机中没有很多命令
 

目录挂载

启动容器时使用-v参数

比如说docker -v  /app/ngtml:/usr/share/nginx/html

里面的容器目录/app/ngtml对应外面的主机中的/usr/share/nginx/html

卷映射

docker run -d --name db -v mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -m 2g mysql:8.0

docker -v  ngconf:/usr/share/nginx/html

配置文件如果在外主机没有,启动是时就会出现文件夹有,但是配置文件找不到,因为我们没有实现放进去,所以启动失败;

所以使用数据卷:

主机中统一放在/var/lib/docker/volumes/
 

docker  volume 是对卷的操作 ls  create等

4、自定义网络

每一个容器使用docker run启动后,都会加入docker0的默认网络;

使用docker inspect nginx可以查看

结论就是:docker每次启动一个容器,都会为容器分配一个ip在docker0中

问题:IP都会变,所以不方便怎么办?

使用域名--------

1.创建自定义网络

docker network create mynet

查看网络docker network ls

此时在启动:

docker run -d -p 82:80 --name app2 --network mynet nginx
再查看docker inspect app1 

此时进入容器docker exec -it app1 bash

然后访问curl http://app2:80就会访问到app2的数据

更多推荐