Docker

一、docker-compose安装

1、步骤

Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases

运行以下命令以下载 Docker Compose 的当前稳定版本:

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

要安装其他版本的 Compose,请替换 1.24.1。

将可执行权限应用于二进制文件:

$ sudo chmod +x /usr/local/bin/docker-compose

创建软链:

$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试是否安装成功:

$ docker-compose --version
cker-compose version 1.24.1, build 4667896b

注意: 对于 alpine,需要以下依赖包: py-pip,python-dev,libffi-dev,openssl-dev,gcc,libc-dev,和 make。

2、基本使用

上述命令会执行如下几个动作:

  • 关闭正在运行的容器

  • 删除所有相关容器

  • 移除NAT(docker-compose在运行的时候会创建一个NAT网段)

二、docker安装

1、使用官方安装脚本自动安装

安装命令如下:

也可以使用国内 daocloud 一键安装命令:

2、手动安装

卸载旧版本

Docker 的旧版本被称为 docker,docker.io 或 docker-engine 。如果已安装,请卸载它们:

当前称为 Docker Engine-Community 软件包 docker-ce 。

安装 Docker Engine-Community,以下介绍两种方式。

使用 Docker 仓库进行安装

在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker 。

设置仓库

更新 apt 包索引。

安装 apt 依赖包,用于通过HTTPS来获取仓库:

添加 Docker 的官方 GPG 密钥:

9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。

使用以下指令设置稳定版仓库

安装 Docker Engine-Community

更新 apt 包索引。

安装最新版本的 Docker Engine-Community 和 containerd ,或者转到下一步安装特定版本:

要安装特定版本的 Docker Engine-Community,请在仓库中列出可用版本,然后选择一种安装。列出您的仓库中可用的版本:

使用第二列中的版本字符串安装特定版本,例如 5:18.09.1~3-0~ubuntu-xenial。

测试 Docker 是否安装成功,输入以下指令,打印出以下信息则安装成功:

3、使用 Shell 脚本进行安装

Docker 在 get.docker.comtest.docker.com 上提供了方便脚本,用于将快速安装 Docker Engine-Community 的边缘版本和测试版本。脚本的源代码在 docker-install 仓库中。 不建议在生产环境中使用这些脚本,在使用它们之前,您应该了解潜在的风险:

  • 脚本需要运行 root 或具有 sudo 特权。因此,在运行脚本之前,应仔细检查和审核脚本。

  • 这些脚本尝试检测 Linux 发行版和版本,并为您配置软件包管理系统。此外,脚本不允许您自定义任何安装参数。从 Docker 的角度或您自己组织的准则和标准的角度来看,这可能导致不支持的配置。

  • 这些脚本将安装软件包管理器的所有依赖项和建议,而无需进行确认。这可能会安装大量软件包,具体取决于主机的当前配置。

  • 该脚本未提供用于指定要安装哪个版本的 Docker 的选项,而是安装了在 edge 通道中发布的最新版本。

  • 如果已使用其他机制将 Docker 安装在主机上,请不要使用便捷脚本。

本示例使用 get.docker.com 上的脚本在 Linux 上安装最新版本的Docker Engine-Community。要安装最新的测试版本,请改用 test.docker.com。在下面的每个命令,取代每次出现 get 用 test。

如果要使用 Docker 作为非 root 用户,则应考虑使用类似以下方式将用户添加到 docker 组:

三、docker简单使用

安装

启动docker服务

常用命令:

释义

命令

搜索镜像

docker search keyword

下载镜像

docker pull image_name:version

查看本地所有镜像

docker images

查看所有运行中容器

docker ps

查看所有容器

docker ps -a

启动一个容器

docker run --name=rand_name -it -d image_name sh

进入一个容器

docker exec 容器id bash

以root的方式进入容器

docker exec -u root -it 容器id bash

暂停一个容器

docker stop 容器id

移除一个容器

docker rm 容器id

移除一个镜像

docker rmi 镜像id

批量停止容器

docker stop $(docker ps -q)

批量移除容器

docker rm `docker ps -a -q`

批量移除镜像

docker rmi `docker images -q`

docker 启动一个容器

docker 容器封装成镜像

docker打包

docker更换下载源

docker封装cms的基本思路

1.下载一个LAMP环境(不一定是LAMP根据实际情况pull)

2 启动环境(根据实际情况选择参数,镜像id通过docker image 查看)

3.进入容器(docker ps 查看容器id)

4.切换到web路径,使用wegt命令将cms添加的docker容器中,也可在第二步中直接挂在进去

5.cms的正常安装

6.退出容器,并暂停容器

7.将容器封装为镜像,如果有本地挂载,同时保存一份本地挂载的文件,以便复现时导入

8. 将容器镜像打包

dockerfile封装CMS基本思路

1、编写Dockerfile

2、运行命令封装为镜像

示例:

四、常见问题

1、docker pull的时候出错

步骤如下:

1、编辑 /etc/resolv.conf 文件,在文件中添加如下内容:

2、保存并推出,之后重启docker服务

2、docker pull: "No address associated with hostname"

解决方案如下:(参考链接

重启网络与docker

效果图

3、docker的daemon.json

4、dockerfile优化

5、部分vulhub环境不可用

原因如下: 1、由于docker-compose的时候没有添加MySQL等数据库镜像,导致CMS不能正常运行 2、Dockerfile中只有引入PHP+Apache镜像,没有在其中安装MySQL

临时解决方案: 1、在docker-compose.yml文件中添加MySQL数据库,如下

6、docker-compose.yml中的MySQL

最后更新于

这有帮助吗?