Centos 安装 Docker

216天前 · 分享 · 1342次阅读

Centos 安装 Docker

安装脚本

一键安装脚本!Linux系统都支持!

   
   curl  -sSL https://get.docker.com/ | sh

    #国内阿里云镜像
    curl  -fsSL https://get.docker.com | bash -s docker --mirror Aliyun  

    #Azure源(中国区azure)
    curl  -fsSL https://get.docker.com | bash -s docker --mirror AzureChinaCloud  

启动服务

    
    # 启动docker服务
    systemctl start docker.service

    # 停止docker服务
    systemctl stop docker.service

    # 重启docker服务
    systemctl restart docker.service

    # 查看docker服务当前状态
    systemctl status docker.service

    # 设置 docker 服务开机自启动
    systemctl enable docker.service

    # 停止 docker 服务开机自启动
    systemctl disable docker.service

国内镜像

为了加速下载镜像文件,国内服务器可以指定国内的镜像!

阿里云:https://registry.cn-hangzhou.aliyuncs.com/

华为云:https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com/

Docker中国:https://registry.docker-cn.com

网易:http://hub-mirror.c.163.com

中科大:https://docker.mirrors.ustc.edu.cn

腾讯云 https://mirror.ccs.tencentyun.com

写入配置文件 重启服务

   
   sudo mkdir -p /etc/docker
   
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker

迁移目录

主要是为了不让Docker镜像,容器占用系统盘的容量!

如果就一块盘或者系统盘容量大,这部分内容可忽略!

    # 给Docker廋身一下
    #docker system prune

    #停止Docker服务
    systemctl stop docker

    #创建目标目录
    mkdir -p /data/docker/

    #同步源目录文件 -> 目标目录
    rsync -avz /var/lib/docker/ /data/docker

    #修改Docker配置文件
    vim /etc/docker/daemon.json

    #修改或者新增内容如下
    {
        "data-root": "/data/docker"
    }

    #启动Docker服务 
    systemctl start docker

    # 查看是否修改成功
    docker info | grep "Docker Root Dir"

    #输出:Docker Root Dir: /data/docker  就OK了!

常用命令

    #下载镜像
    docker pull nginx
    #启动容器
    #下面命令为启动一个nginx,将服务器的8080 端口 映射到 容器的80端口,且容器命名为nginx-test
    docker run -d -p 8080:80 nginx --name="nginx-test"

    #停止容器
    docker stop xxxx

    删除容器
    docker rm id


    -f, --force=false 是否强行终止并删除一个运行中的容器
    -l, --link=false :删除容器的连接 ,但保留容器
    -v, --volumes=false :删除容器挂载的数据卷



    删除所有镜像
    docker rmi $(docker images -q)
    #停止所有容器
    docker stop $(docker ps -a -q)
    #删除所有容器
    docker rm $(docker ps -a -q)
    #启动所有容器
    docker start $(docker ps -a -q)


    #进入容器
    docker exec -it jd /bin/bash  
    docker exec -it jd /bin/sh
    docker exec -it jd /bash
    docker exec -it jd /sh


    #宿主往容器中复制文件
    docker cp /etc/apt/sources.list ubuntu:/etc/apt/


    #容器中往宿主机复制
    docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt


    #不进入容器 在容器中执行命令 
    docker exec ID 命令

    #查看容器信息
    docker inspect ID


    #查询部分信息
    docker inspect -f {{.Config.Hostname}} id

开发调试

Build Dockerfile

  
  #比如我们要写一个Dockerfile 该怎么调试呢?
    docker build -t [命名] [编译的目录]

    #比如:AList目录中有Dockerfile,重新编译镜像,且命名成alist
    docker build -t alist ./AList/

    #启动 alist
    docker run alist --name="alist"

容器目录映射

以docker hub的centos:8为研究对象

1、宿主机和容器映射目录都不存在

宿主机和容器映射目录都会自动创建,且在一边操作等同于在另一边操作。

2、宿主机目录不存在,容器映射目录为空。容器中/usr/lib/games目录为空

宿主机映射目录会自动创建,且在一边操作等同于在另一边操作。

3、宿主机目录不存在,容器映射目录不为空。容器中/usr/lib/locale/C.utf8目录不为空

宿主机映射目录会自动创建,容器映射目录中原来的文件都消失了,在一边操作等同于在另一边操作,且操作的是宿主机目录中的文件。

4、宿主机映射目录为空,容器映射目录不存在

容器映射目录会自动创建,且在一边操作等同于在另一边操作。

5、宿主机和容器映射目录都为空。

在一边操作等同于在另一边操作。

6、宿主机映射目录为空,容器映射目录不为空

容器映射目录中原来的文件都消失了。在一边操作等同于在另一边操作,且操作的是宿主机目录中的文件。

7、宿主机映射目录不为空,容器映射目录不存在

容器映射目录会自动创建,一进去该目录就能看见宿主机映射目录中的文件,且在一边操作等同于在另一边操作。

8、宿主机映射目录不为空,容器映射目录为空

一进容器映射目录就能看见宿主机映射目录中的文件,且在一边操作等同于在另一边操作。

9、宿主机和容器映射目录都不为空。

容器映射目录中原来的文件都消失了。在一边操作等同于在另一边操作,且操作的是宿主机目录中的文件。

常见问题

容器内没有网 不能解析dns

创建时添加以下参数

--network=host
👍 0

docker linux

最后修改于174天前

目录

avatar

星夜

19

文章数

1

评论数

4

分类