Docker


一. 安装Docker

1. 安装与卸载

$cat /etc/os-release     #查看版本信息

1. Uninstall old versions
$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2. 安装package
$ sudo yum install -y yum-utils

3. 设置仓库的镜像
$ sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4. 安装docker社区版
$ sudo yum install docker-ce docker-ce-cli containerd.io

5. Start Docker
$ sudo systemctl start docker

6. Docker version
$ docker version

7. Verify Docker
$ sudo docker run hello-world

8. 查看Docker 镜像
$ docker images

9.卸载Docker 社区版
$ sudo yum remove docker-ce docker-ce-cli containerd.io

10.卸载所有
$  sudo rm -rf /var/lib/docker       # /var/lib/docker docker工作路径
$ sudo rm -rf /var/lib/containerd

2. 阿里云镜像加速

  1. 容器镜像服务
  2. 镜像加速器
  3. 配置
  4. 通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
#这个加速器是指的是阿里云的机器从内部访问他的镜像服务器,正常都是从公网访问的,所以如果你是本地的机器,用不了。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://rpr2syxw.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

二. Run流程与Docker原理

1. 流程

$ sudo docker run hello-world  执行后发生的事

流程图:

image-20210306194555430

2. 底层原理

Docker 是一个C-S 结构, 通过Socker连接 , DockerClinet 向DockerServer访问

image-20210306195157037

3. 为什么比VM快

  1. 更少的抽象性
  2. docker利用宿主机的内核, vm需要Guest OS

image-20210306195405417

三. Docker常用命令

1. 镜像命令

docker version   #显示docker的版本信息
docker info  #显示docker 系统信息
docker 命令 --help  #查询所有命令

查看images
docker images  --help

搜索docker
docker search file  --filter=STEAR>3000

下载镜像
docker pull

删除镜像
docker rmi -f 
docker rmi -f $(docker images -aq)  递归删除所有images

docker pull

image-202103062016498322. 容器命令

有镜像才能有容器.

1. 新建容器并启动
    docker run [可选参数] image

    #参数说明
    --name="Name"  容器名字 tomcat01用来区分容器
    -d    后台方式运行
    -it  使用交互方式运行
    -P   指定容器的端口, 
    -p    随机指定端口

    例子:
        进入容器:
            docker run -it centos /bin/bash
        退出容器
            exit
2. 列出所有运行的容器        
docker ps  
        -a   #列出当前正在运行的容器 + 带出历史运行的容器
        -n=1  #显示最近一个容器
        -q  #只显示容器的编号
3. 退出容器
exit #直接退出容器并退出
ctrl + P + Q   #退出容器, 容器不退出

4. 删除容器
docker rm 容器id  #删除指定容器, 不能删除正在运行的程序
docker rm -f $(docker ps -aq)  #全部删除容器
docker ps -a -q|xargs docker rm  #全部删除容器

5. 启动和停止容器的操作
docker start 容器id
docker restart 容器id
docker stop 容器id
docker kill 容器id   #强制停止容器

3. 其他常用命令

1. 命令 docker run -d 镜像名
    docker run -d centos
    #问题docker ps 发现centos 停止了, 常见的坑, docker使用后台运行, 
    #必须要有一个前台进程, docker发现没有应用, 就会自动停止
    #nginx 容器启动后, 发现自己没有提供服务, 就会立刻停止, 就是没有程序了

2. 查看日志
docker logs
     docker logs -tf --tail 10 eec72a399dd7   #显示10条日志

3. 查看容器中进程信息
docker top id

4. 查看镜像元数据
docker inspect id

4. 进入当前正在运行的容器

# 我们通常容器都是使用后台方式运行, 需要进入容器, 修改一些配置
#命令
1. 进入容器
    方式一: # 进入容器后开启一个新的终端
        docker ps
        docker exec -it 容器id /bin/bash  
     方式二: # 进入容器正在执行的终端, 不会产生新的终端 
         docker attach 容器id

2. 在容器中创建文件
touch test.java

3. 从容器中拷贝到主机上
docker attch 容器id
docker cp 容器id:/home/test /home      (容器id:/home/test)容器内文件路径  (/home/)将文件存入主机位置

文章作者: 梵星
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 梵星 !
  目录