言午月月鸟
编程,带娃以及思考人生
首页
编程
带娃
思考人生
编程画图秀
Docker 常用操作
dingusxp
2559
## 介绍 [略] ## 安装 系统: centos ```Bash # 安装 yum install docker # 确认 docker -v # 配置源 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 服务化 service docker start systemctl enable docker.service systemctl start docker ``` 系统: mac ```Bash brew install docker ``` ## 常用命令 ### 镜像 ```Bash // 拉取镜像 docker pull ubuntu // 列出本地镜像 docker image ls // 删除镜像 docker image rm xxx // 说明: 如果镜像有已生成的容器,需要先删除容器 // 创建自己的镜像 // 1. 编辑 Dockerfile(后面详述) // 2. 运行下面命令打包镜像 cd dockerfile-dir docker build -t namespace/image-name:tag . ``` ### 容器 ```Bash // 启动容器 docker run ubuntu:latest /bin/echo "Hello world" // 说明: 镜像名:标签 ,其中标签可选,默认为 latest; 如果本地不存在镜像,会尝试从远程仓库拉取镜像 // 端口绑定示例 docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py // 说明: 可以使用 -P 参数,将随机生成端口映射; -d 参数表示后台运行 // 列出运行中的容器 docker container ls // 说明: 可以用 ls -a ,列出包含 已停止 的容器 // 以交互模式进入容器 docker exec -it xxx sh // 停止 重启 容器 docker stop xxx (容器名) docker restart xxx // 删除容器 docker container rm xxx ``` ### Dockerfile Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 常用指令: **FROM**:定制的镜像都是基于 FROM 的镜像。 **RUN**:用于执行后面跟着的命令行命令。Dockerfile 的指令每执行一次都会在 docker 上新建一层。可以使用 && 连接命令来减少无意义的层级。 **COPY**:复制指令,从上下文目录中复制文件或者目录到容器里指定路径。 **CMD**:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。 **ENTRYPOINT**:类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖 **ENV**:设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。 **VOLUME**:定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。 **EXPOSE**:声明端口。 **WORKDIR**:指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。 **USER**:用于指定执行后续命令的用户和用户组,这边只是切换后续命令执行的用户(用户和用户组必须提前已经存在)。 范例:(hyperf2.0 demo) ```Bash # Default Dockerfile # # @link https://www.hyperf.io # @document https://hyperf.wiki # @contact group@hyperf.io # @license https://github.com/hyperf-cloud/hyperf/blob/master/LICENSE FROM hyperf/hyperf:7.4-alpine-v3.11-cli LABEL maintainer="Hyperf Developers
" version="1.0" license="MIT" app.name="Hyperf" ## # ---------- env settings ---------- ## # --build-arg timezone=Asia/Shanghai ARG timezone ENV TIMEZONE=${timezone:-"Asia/Shanghai"} \ COMPOSER_VERSION=1.10.10 \ APP_ENV=prod \ SCAN_CACHEABLE=(true) # update RUN set -ex \ # install composer && cd /tmp \ && wget https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar \ && chmod u+x composer.phar \ && mv composer.phar /usr/local/bin/composer \ # show php version and extensions && php -v \ && php -m \ && php --ri swoole \ # ---------- some config ---------- && cd /etc/php7 \ # - config PHP && { \ echo "upload_max_filesize=128M"; \ echo "post_max_size=128M"; \ echo "memory_limit=1G"; \ echo "date.timezone=${TIMEZONE}"; \ } | tee conf.d/99_overrides.ini \ # - config timezone && ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \ && echo "${TIMEZONE}" > /etc/timezone \ # ---------- clear works ---------- && rm -rf /var/cache/apk/* /tmp/* /usr/share/man \ && echo -e "\033[42;37m Build Completed :).\033[0m\n" WORKDIR /opt/www # Composer Cache # COPY ./composer.* /opt/www/ # RUN composer install --no-dev --no-scripts COPY . /opt/www RUN composer install --no-dev -o && php bin/hyperf.php EXPOSE 9501 ENTRYPOINT ["php", "/opt/www/bin/hyperf.php", "start"] ```
粤ICP备19051469号-1
Copyright©dingusxp.com - All Rights Reserved
Template by
OS Templates