Docker入门到精通教程

2022-07-16 22:36:02
2024-07-21 20:18:22

为什么要用 Docker

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。

安装

安装 yum-utils 软件包

shell 复制代码
sudo yum install -y yum-utils

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装 DOCKER 引擎

shell 复制代码
sudo yum install docker-ce docker-ce-cli containerd.io

启动 Docker

shell 复制代码
sudo systemctl start docker

验证是否安装成功

shell 复制代码
docker version

通过运行hello-world 映像来验证是否正确安装了 Docker Engine 。

shell 复制代码
sudo docker run hello-world

常用命令

查看当前有些什么 images

shell 复制代码
docker images

查看所有运行或者不运行容器

shell 复制代码
docker ps -a

停止、启动、杀死、重启一个容器

shell 复制代码
docker stop Name或者ID

docker start Name或者ID

docker kill Name或者ID

docker restart name或者ID

删除 images(镜像),通过 image 的 id 来指定删除谁

shell 复制代码
docker rmi <image id>

CentOS 7 清理删除卸载 Docker 环境

杀死所有运行容器

shell 复制代码
docker kill $(docker ps -a -q)

删除所有容器

shell 复制代码
docker rm $(docker ps -a -q)

删除所有镜像

shell 复制代码
docker rmi $(docker images -q)

停止 docker 服务

shell 复制代码
systemctl stop docker

删除存储目录

shell 复制代码
rm -rf /etc/docker
rm -rf /run/docker
rm -rf /var/lib/dockershim
rm -rf /var/lib/docker

如果发现删除不掉,需要先 umount,如

shell 复制代码
umount /var/lib/docker/devicemapper

卸载 docker 查看已安装的 docker 包

shell 复制代码
yum list installed | grep docker

卸载相关包

shell 复制代码
yum remove docker-engine docker-engine-selinux.noarch

docker-compose

对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。执行 docker-compose [COMMAND] --help 或者 docker-compose help [COMMAND] 可以查看具体某个命令的使用格式。

docker-compose 命令的基本的使用格式是

shell 复制代码
docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
2. 命令选项
  • -f, --file FILE 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
  • -p, --project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名。
  • --x-networking 使用 Docker 的可拔插网络后端特性
  • --x-network-driver DRIVER 指定网络后端的驱动,默认为 bridge
  • --verbose 输出更多调试信息。
  • -v, --version 打印版本并退出。
3.命令使用说明
up

格式为 docker-compose up [options] [SERVICE...]

  • 该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。

  • 链接的服务都将会被自动启动,除非已经处于运行状态。

  • 可以说,大部分时候都可以直接通过该命令来启动一个项目。

  • 默认情况,docker-compose up 启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可以很方便进行调试。

  • 当通过 Ctrl-C 停止命令时,所有容器将会停止。

  • 如果使用 docker-compose up -d,将会在后台启动并运行所有的容器。一般推荐生产环境下使用该选项。

  • 默认情况,如果服务容器已经存在,docker-compose up 将会尝试停止容器,然后重新创建(保持使用 volumes-from 挂载的卷),以保证新启动的服务匹配 docker-compose.yml 文件的最新内容


down
  • 此命令将会停止 up 命令所启动的容器,并移除网络

exec
  • 进入指定的容器。

ps

格式为 docker-compose ps [options] [SERVICE...]

列出项目中目前的所有容器。

选项:

  • -q 只打印容器的 ID 信息。

restart

格式为 docker-compose restart [options] [SERVICE...]

重启项目中的服务。

选项:

  • -t, --timeout TIMEOUT 指定重启前停止容器的超时(默认为 10 秒)。

rm

格式为 docker-compose rm [options] [SERVICE...]

删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop 命令来停止容器。

选项:

  • -f, --force 强制直接删除,包括非停止状态的容器。一般尽量不要使用该选项。
  • -v 删除容器所挂载的数据卷。

start

格式为 docker-compose start [SERVICE...]

启动已经存在的服务容器。


stop

格式为 docker-compose stop [options] [SERVICE...]

停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器。

选项:

  • -t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)。

top

查看各个服务容器内运行的进程。


unpause

格式为 docker-compose unpause [SERVICE...]

恢复处于暂停状态中的服务。


shell 复制代码
docker-compose up

docker-compose.yml参考文件

yml 复制代码
version: '3.7'


services:
    jenkins:
        image: jenkins/jenkins:lts
        container_name: jenkins
        environment:
            - TZ=Asia/Shanghai
        volumes:
            - /www/wwwroot/:/var/jenkins_home/workspace/
            - /var/run/docker.sock:/var/run/docker.sock
            - /usr/bin/docker:/usr/bin/docker
            - /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
        ports:
            - "8080:8080"
        expose:
            - "8080"
            - "50000"
        privileged: true
        user: root
        restart: always

    bt:
       image: pch18/baota
       container_name: bt
       volumes: 
            - /www/wwwroot:/www/wwwroot
            - ./baota/logs:/www/wwwlogs
       restart: unless-stopped
       ports: 
            - "80:80"
            - "443:443"
            - "8888:8888"
            - "888:888"
            - "3306:3306"

部署 Portiner 容器

拉取镜像

复制代码
docker search portainer

拉取镜像

复制代码
docker pull docker.io/portainer/portainer
shell 复制代码
docker volume create portainer_data

docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
  • 挂载本地: -v /var/run/docker.sock:/var/run/docker.sock
  • 与容器的连接: /var/run/docker.socker
  • 数据持久化: -v portainer_data:/data

访问地址:

js 复制代码
ip:9000
目录
暂无评论,欢迎留下你的评论

运营需要亿点资金维持,您的支持,是小白龙创作的动力!!!

昵称
留言
赞赏金额