Avatar

Organizations

9 results for Docker
  • 1、安装Composer镜像

    $ docker pull composer:1.9.0
    

    2、安装laravel

    # 启动Composer镜像
    $ docker run --rm \
                    -it \
                    -v ${PWD}:/app \
                    composer:1.9.0 /bin/bash
    
    # 创建composer.json文件
    $ composer init -n
    
    # 使用国内 Packagist镜像
    $ composer config repo.packagist composer https://mirrors.aliyun.com/composer/
    
    # 添加laravel包
    $ composer require -vvv \
                        --prefer-dist \
                        --prefer-stable \
                        laravel/installer
    
    # 看到以下输出,说明添加成功。
    Writing lock file
    Generating autoload files
    
    # 在当前目录覆盖安装laravel
    $ ./vendor/bin/laravel new
    
    # 看到以下输出,说明安装成功。
    Package manifest generated successfully.
    Application ready! Build something amazing.
    
    # 退出Composer镜像
    $ exit  
    

    将当前目录下的storage目录权限,设为757

    php docker centos laravel Created Fri, 19 Jan 2024 13:26:15 +0800
  • 因为阿里的弹性WEB托管,使用php 5.5.30版本,所以只能安装Laravel 5.2版本。

    本教程使用WSL + docker环境安装,除完整的laravel环境外,不会在本地留下任何痕迹。

    1、本地安装Composer镜像

    $ docker pull composer:1.9.0
    

    2、配置Composer镜像

    # 启动Composer镜像
    $ docker run --rm \
                    -it \
                    -v ${PWD}:/app \
                    composer:1.9.0 /bin/bash
    
    # 使用国内 Packagist镜像
    $ composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
    
    $ composer create-project -vvv \
                                --prefer-dist \
                                --no-scripts \
                                --keep-vcs \
                                laravel/laravel:5.2.31 \
                                YSME
    
    # 看到以下输出,说明安装完成。
    
    Writing lock file
    Generating autoload files
    
    # 退出Composer镜像
    $ exit  
    

    4、安装到虚拟主机

    copy YSME目录下的全部内容,到虚拟主机的目录下即可。

    5、测试

    访问 http://你的域名/YSME/public/ 如果显示 Laravel 5 字样,说明安装成功!

    php docker laravel Created Fri, 19 Jan 2024 13:18:15 +0800
  • 在 Docker 的容器内开发,相当于使用VSCode的远程开发能力,好处非常多。

    • 开发环境统一、可维护性强
    • 后期部署简单

    1. 安装 Docker

    Docker 安装

    2. 安装 Visual Stuido Code

    这不废话嘛,同上。

    3. 安装 Remote Development 扩展包

    官方推荐安装 Remote Development 这个扩展包,它包括三个扩展功能:

    • Remote - SSH
    • Remote - Containers
    • Remote - WSL

    如果你只使用 Docker ,可以只安装 Remote - Containers 这个扩展。

    安装成功后,你可以在 VSCode 的左下角,看到一个“蓝底色+两个相对白箭头”的图标。

    点击图标,可以看到 Remote - Containers 提供了许多方法进行配置。

    4. 配置 Remote - Containers

    4.1. 使用现成的 docker-compose.yml 配置

    1. 点击左下角的蓝色图标
    2. 选择 Add Development Container Configuration Files…
    3. 选择 Existing Docker Compose (Extend)
      1. VSCode 会自动在项目的根目录下,生成 .devcontainer 文件夹
      2. 在 .devcontainer 目录内,包括两个文件:
        1. devcontainer.json:VSCode 使用它连接开发容器
        2. docker-compose.yml:示例文件,可以不用管它
    4. 打开 devcontainer.json 文件

    照着 docker-compose.yml 进行修改,见下面示例

    python venv docker vscode Created Sat, 25 Nov 2023 00:24:10 +0800
  • command 指令

    # 字符串方式
    command: /bin/bash -c "cp /app/dtest/config.default.yml /app/config.yml && python -u /app/dtest/tcc.py"
    # 另一种方式
    command: ["/bin/bash","-c","while","true;","do","sleep","1;","done"]
    # 配置文件方式
    ......
    

    tty 指令

    启动后停在cli,等待登录

    stdin_open: true # 对应 docker run 中的 -i
    tty: true        # 对应 docker run 中的 -t
    
    docker compose cli Docker Created Tue, 19 Jul 2022 11:31:21 +0800
  • 在 Alpine 上安装 Docker 真是一件让人感觉非常愉快的事情,因为过程非常简单。

    修改 apk 源

    $ nano /etc/apk/repositories
    

    因为 docker 在社区的库里,所以要打开 community 的源。

    #/media/cdrom/apks
    http://mirrors.tuna.tsinghua.edu.cn/alpine/v3.16/main
    http://mirrors.tuna.tsinghua.edu.cn/alpine/v3.16/community
    #http://mirrors.tuna.tsinghua.edu.cn/alpine/edge/main
    #http://mirrors.tuna.tsinghua.edu.cn/alpine/edge/community
    #http://mirrors.tuna.tsinghua.edu.cn/alpine/edge/testing
    

    安装 Docker

    $ apk update
    $ apk add docker docker-cli-compose
    # 这里要特别注意,docker compose 的包名在 Alpine 里是 docker-cli-compose,不是 docker-compose-plugin。
    # docker-compose 包是 compose 的独立安装包,官方已经不再支持这种安装方式。
    ...
    $ docker -v
    Docker version 20.10.16, build aa7e414fdcb23a66e8fabbef0a560ef1769eace5
    $ docker compose version
    Docker Compose version v2.12.2
    

    配置 Docker

    (CentOS 7 | Rocky 9) 安装 Docker

    linux Alpine linux Docker Created Sun, 19 Jun 2022 16:08:06 +0800
  • 尝试使用 Ubuntu 的 Snap 后,发现真的非常方便。

    看过Snap的介绍以后,发现Snap的沙盒理念非常先进,在存储基本不成问题背景下,会系统环境的影响更小。

    而且docker-compose命令也会一起安装,更是方便。

    1.安装

    $ sudo snap install docker
    

    2.设置

    # 设置开机启动
    $ sudo snap start docker --enable
    # 确认服务状态
    $ sudo snap services docker
    # 查看服务详情
    $ service snap.docker.dockerd status
    

    使用sudo安装后要注意以后调用时,都要使用sudo命令前缀。

    3.其它

    # 安装目录
    /snap/docker/current         
    # 服务启动配置文件
    /etc/systemd/system/snap.docker.dockerd.service
    # 配套 AppArmor 配置文件
    /var/lib/snapd/apparmor/profiles/snap.docker.docker
    /var/lib/snapd/apparmor/profiles/snap.docker.dockerd
    # 默认 Unix Socket 文件路径
    unix:///var/snap/docker/current/run/docker/libcontainerd/docker-containerd.sock
    

    4.参考文献

    Docker 安装指南

    Snap Docker Created Wed, 11 May 2022 18:41:48 +0800
  • 1 准备环境

    开发环境还是建议使用 Docker 来搭建,方便快捷。 不过 Django 的官方镜像已经弃用了,官方建议新版本使用 Python 官方提供的镜像来构建。

    Docker
      ┗ Python == 3.9.12-buster
          ┗ Django == 3.2.13 LTS
          ┗ django-simpleui==2022.11.30
    

    可以参考[https://github.com/Cuile/Docker-to-Python/tree/master/Django],提供了 Dockerfil、yml 文件,还提供全套使用命令。

    2 创建项目

    # 创建项目
    $ django-admin startproject mysite
    $ cd mysite
    
    # 生成项目
    $ python manage.py startapp websrc
    # 运行项目测试
    $ python manage.py runserver 0.0.0.0:80
    

    修改配置后,建议使用项目调试的方式启动,不要使用快捷命令,项目正常启动稳定运行后,再使用快捷命令。

    # settings.py
    
    # 任意地址都可以访问 Django
    ALLOWED_HOSTS = ['*'] 
    
    # 添加 simpleui 模板,和创建的项目
    INSTALLED_APPS = [
      'simpleui',
      'websrc',
      '......',
    ]
    
    # 这个与多语种有关,在项目初始阶段不要修改,后续添加了多语种支持再修改,否则会导致无法启动。
    # 具体参考(http://www.i18nguy.com/unicode/language-identifiers.html),有个傻逼教程,上来就改成 zh-CN 果然导致项目无法正常启动。
    # 正确的简体中文代码如下:
    LANGUAGE_CODE = 'zh-Hans'
    
    # 时区,上海就代表北京时间,这个不能写错,写错就启动不了
    # 具体参考(https://en.wikipedia.org/wiki/List_of_tz_database_time_zones),这里是标准的,有个傻逼教程非给写成 Asia/Beijing 导致怎么都起不来,太TMD的二逼了。
    # 正解的北京时间时区如下:
    TIME_ZONE = 'Asia/Shanghai'
    
    # 启动翻译,与上面的 LANGUAGE_CODE 设置相对应
    USE_I18N = True
    # 启动格式控制
    USE_L10N = True
    # 启动时区
    USE_TZ = True
    

    3 创建管理员账号

    $ python manage.py createsuperuser
    Username: admin
    Email address: [email protected]
    Password: **********
    Password (again): *********
    Superuser created successfully.
    

    访问项目链接,比如"http://127.0.0.1:8000/admin/

    gunicorn Supervisor Python docker Django Created Tue, 10 May 2022 16:30:13 +0800
  • 其实网上相关的文章已经非常多了,所以这篇文章的作用只是记录和明确一条确定可行的操作路径,为以后的操作节省时间,毕竟像我一样大部分人都不是专业的系统管理员,能够快速解决问题就可以了,并不想做过多的专业研究与探索。

    本操作手册是官方手册与网上手册的结合版本,集两家之所长,亲自操作可用。

    Debian

    # 安装 Docker 证书
    sudo apt-get install -y ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc\
    sudo echo
          "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian
          $(. /etc/os-release && echo "$VERSION_CODENAME") stable" |
          sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    
    # 安装 Docker
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
    # 启动 Docker
    sudo systemctl enable docker.service
    sudo systemctl start docker.service
    
    # 测试
    sudo docker version
    > Client: Docker Engine - Community
    > ...
    > Server: Docker Engine - Community
    > ...
    sudo docker compose version
    > Docker Compose version v...
    
    # 使用非 root 用户管理 Docker
    # 创建 docker 用户组
    sudo groupadd docker
    # 将当前用户添加到 docker 用户组
    sudo usermod -aG docker $USER
    # 重启
    # 再次测试
    docker version
    > Client: Docker Engine - Community
    > ...
    > Server: Docker Engine - Community
    > ...
    docker compose version
    > Docker Compose version v...
    

    CentOS | Rocky

    # 查看系统版本
    cat /etc/redhat-release
    > CentOS Linux release 7.6.1810 (Core) // CentOs 7 以上版本
    
    # 查看系统内核版本
    uname -r
    > 4.10.4-1.el7.elrepo.x86_64 // 内核版本要>3.10
    
    # 卸载旧版本
    yum remove docker
                docker-client
                docker-client-latest
                docker-common
                docker-latest
                docker-latest-logrotate
                docker-logrotate
                docker-selinux
                docker-engine-selinux
                docker-engine
    
    # 安装依赖包
    yum install -y yum-utils lvm2
                    device-mapper-persistent-data
    
    # 添加 Docker 软件源
    # 如果系统已切换到阿里云镜像源地址,可跳过此步。
    # 阿里云镜像自带docker源
    yum-config-manager
        --add-repo
        https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
    
    # 使用官方源
    yum-config-manager
        --add-repo
        https://download.docker.com/linux/centos/docker-ce.repo
    
    yum makecache fast
    # CentOS 8 or Rocky 9 使用timer替换fast
    yum makecache timer
    
    # 安装 Docker
    # 如果在 Rocky 9 系统上,会提示containerd.io版本过低,或下载失败,需要独立安装containerd.io
    # 可以重试几次
    yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
    # 启动 Docker
    # 设为开机启动
    systemctl enable docker.service
    # 启动服务
    systemctl start docker.service
    
    # 测试
    docker run hello-world
    > Unable to find image 'hello-world:latest' locally
    > latest: Pulling from library/hello-world
    > 1b930d010525: Pull complete
    > Digest: sha256:6540fc08ee6e6b7b63468dc3317e3303aae178cb8a45ed3123180328bcc1d20f
    > Status: Downloaded newer image for hello-world:latest
    > 
    > Hello from Docker!
    > This message shows that your installation appears to be working correctly.
    > 
    > To generate this message, Docker took the following steps:
    >  1. The Docker client contacted the Docker daemon.
    >  2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    >     (amd64)
    >  3. The Docker daemon created a new container from that image which runs the
    >     executable that produces the output you are currently reading.
    >  4. The Docker daemon streamed that output to the Docker client, which sent it
    >     to your terminal.
    > 
    > To try something more ambitious, you can run an Ubuntu container with:
    >  docker run -it ubuntu bash
    > 
    > Share images, automate workflows, and more with a free Docker ID:
    >  https://hub.docker.com/
    > 
    > For more examples and ideas, visit:
    >  https://docs.docker.com/get-started/
    
    docker compose version
    > Docker Compose version v...
    

    若能正常输出以上信息,则说明安装成功。

    linux CentOS Debian rocky Docker Created Fri, 06 May 2022 11:05:23 +0800
  • 镜像列表

    docker image ls -a
    # or
    docker images
    

    容器列表

    docker container ls -a
    # or
    docker ps
    

    查看输出

    docker compose -f <yaml_file> logs [-f] [service name]
    # or
    docker logs [-f] [container id]
    

    验证配置文件

    docker compose -f <yaml_file> config
    

    删除冗余镜像

    echo 'y' | docker system prune
    

    导入导出镜像

    # 导入
    docker load -i <image>.tar
    # 导出
    docker save -o <image>.tar <image_name:label>
    

    不启动镜像,查看镜像内的文件

    # 创建临时容器
    docker conatiner create --name <container_name> <image_name>
    # 从容器复制文件到宿主机
    docker conatiner cp <container_name>:<file_path> <dest_path>
    # 清理临时窗口
    docker container rm <container_name>
    

    创建桥接网络

    docker network create [name]
    

    配置DockerHub镜像

    // /etc/docker/daemon.json 
    {
      "registry-mirrors": [
      	"https://docker.1ms.run",
      	"https://docker.xuanyuan.me"
      	]
    }
    
    systemctl daemon-reload
    systemctl restart docker
    

    Docker快捷命令

    echo "alias d-ll='docker image ls -a; echo; docker container ls -a'" >> ~/.bashrc \
        && echo "alias d-ps='docker ps'" >> ~/.bashrc \
        && echo "alias d-clean='docker system prune -f'" >> ~/.bashrc \
        && echo "alias d-rm='_a(){ docker image rm $1; echo; docker container rm $1; }; _a'" >> ~/.bashrc \
        && echo "alias d-exec='_a(){ docker exec -it $1 /bin/bash; }; _a'" >> ~/.bashrc \
        && echo "alias d-stop='_a(){ docker container stop $1; }; _a'" >> ~/.bashrc \
        && echo "alias d-kill='_a(){ docker container kill $1; }; _a'" >> ~/.bashrc
        
    source ~/.bashrc
    
    CLI Docker Created Thu, 13 Jan 2022 22:20:52 +0800