代码拉取完成,页面将自动刷新
# 下载安装
#移除旧版本docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#安装一些必要的系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2 git vim lsof net-tools lrzsz wget zip unzip
#添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新 yum 缓存
yum makecache fast
#安装 Docker-ce
yum install -y docker-ce docker-ce-cli containerd.io
#启动 Docker 后台服务
systemctl start docker
#docker加入开机自启动
systemctl enable docker
systemctl disable docker
https://github.com/docker/compose/releases
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.12.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
http://get.daocloud.io/#install-compose
离线安装
sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
接着执行如下命令添加可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
直接使用docker-compose一键制作镜像并启动容器
当前版本(推荐)
git clone https://gitee.com/zuolg/dnmj.git
启动:
$ cd dnmj # 进入项目目录
$ docker-compose up # 启动
在开发的时候,我们可能经常使用docker exec -it
进入到容器中,把常用的做成命令别名是个省事的方法。
首先,在主机中查看可用的容器:
$ docker ps # 查看所有运行中的容器
$ docker ps -a # 所有容器
输出的NAMES
那一列就是容器的名称,如果使用默认配置,那么名称就是nginx
、mysql
等。
然后,打开~/.bashrc
或者~/.zshrc
文件,加上:
alias dnginx='docker exec -it nginx /bin/sh'
alias dmysql='docker exec -it mysql /bin/bash'
alias dredis='docker exec -it redis /bin/sh'
下次进入容器就非常快捷了,如进入php容器:
$ dnginx
ifconfig docker0
用于填写extra_hosts
容器访问宿主机的hosts
地址
Nginx日志是我们用得最多的日志,所以我们单独放在根目录log
下。
log
会目录映射Nginx容器的/var/log/nginx
目录,所以在Nginx配置文件中,需要输出log的位置,我们需要配置到/var/log/nginx
目录,如:
error_log /var/log/nginx/nginx.localhost.error.log warn;
因为MySQL容器中的MySQL使用的是mysql
用户启动,它无法自行在/var/log
下的增加日志文件。所以,我们把MySQL的日志放在与data一样的目录,即项目的mysql
目录下,对应容器中的/var/lib/mysql/
目录。
slow-query-log-file = /var/lib/mysql/mysql.slow.log
log-error = /var/lib/mysql/mysql.error.log
以上是mysql.conf中的日志文件的配置。
docker start
容器名(容器ID也可以)docker stop
容器名(容器ID也可以)docker run
命令加 -d 参数,docker 会将容器放到后台运行docker ps
正在运行的容器docker logs
--tail 10 -tf 容器名 查看容器的日志文件,加-t是加上时间戳,f是跟踪某个容器的最新日志而不必读整个日志文件docker top
容器名 查看容器内部运行的进程docker exec -d
容器名 touch /etc/new_config_file 通过后台命令创建一个空文件docker inspect
容器名 对容器进行详细的检查,可以加 --format='{(.State.Running)}' 来获取指定的信息docker rm
容器ID 删除容器,注,运行中的容器无法删除docker rm $(docker ps -aq)
删除所有容器docker rmi $(docker images -aq)
删除所有镜像docker images
列出镜像docker pull
镜像名:标签 拉镜像docker search
查找docker Hub 上公共的可用镜像docker login
登陆到Docker Hub,个人认证信息将会保存到$HOME/.dockercfg,docker commit -m="comment " --author="AT"
容器ID 镜像的用户名/仓库名:标签 不推荐这种方法,推荐dockerfiledocker history
镜像ID 深入探求镜像是如何构建出来的docker port
镜像ID 端口 查看映射情况的容器的ID和容器的端口号,假设查询80端口对应的映射的端口docker push
镜像名 将镜像推送到 Docker Hubdocker rmi
镜像名 删除镜像docker attach
容器ID 进入容器docker network create --subnet=172.171.0.0/16 docker-at
选取172.172.0.0网段docker build
就可以加 -ip指定容器ip 172.171.0.10 了MAINTAINER
标识镜像的作者和联系方式EXPOSE
可以指定多个EXPOSE向外部公开多个端口,可以帮助多个容器链接FROM
指令指定一个已经存在的镜像\#
号代表注释RUN
运行命令,会在shell 里使用命令包装器 /bin/sh -c 来执行。如果是在一个不支持shell 的平台上运行或者不希望在shell 中运行,也可以 使用exec 格式 的RUN指令ENV REFRESHED_AT
环境变量 这个环境亦是用来表明镜像模板最后的更新时间VOLUME
容器添加卷。一个卷是可以 存在于一个或多个容器内的特定的目录,对卷的修改是立刻生效的,对卷的修改不会对更新镜像产品影响,例:VOLUME["/opt/project","/data"]ADD
将构建环境 下的文件 和目录复制到镜像 中。例 ADD nginx.conf /conf/nginx.conf 也可以是取url 的地址文件,如果是压缩包,ADD命令会自动解压、USER
指定镜像用那个USER 去运行COPY
是复制本地文件,而不会去做文件提取(解压包不会自动解压) 例:COPY conf.d/ /etc/apache2/ 将本地conf.d目录中的文件复制到/etc/apache2/目录中image
指定为镜像名称或镜像ID。如果镜像不存在,Compose将尝试从互联网拉取这个镜像build
指定Dockerfile所在文件夹的路径。Compose将会利用他自动构建这个镜像,然后使用这个镜像command
覆盖容器启动后默认执行的命令links
链接到其他服务容器,使用服务名称(同时作为别名)或服务别名(SERVICE:ALIAS)都可以external_links
链接到docker-compose.yml外部的容器,甚至并非是Compose管理的容器。参数格式和links类似ports
暴露端口信息。宿主机器端口:容器端口(HOST:CONTAINER)格式或者仅仅指定容器的端口(宿主机器将会随机分配端口)都可以(注意:当使用 HOST:CONTAINER 格式来映射端口时,如果你使用的容器端口小于 60 你可能会得到错误得结果,因为 YAML 将会解析 xx:yy 这种数字格式为 60 进制。所以建议采用字符串格式。)expose
暴露端口,与posts不同的是expose只可以暴露端口而不能映射到主机,只供外部服务连接使用;仅可以指定内部端口为参数volumes
设置卷挂载的路径。可以设置宿主机路径:容器路径(host:container)或加上访问模式(host:container:ro)ro就是readonly的意思,只读模式volunes_from
挂载另一个服务或容器的所有数据卷environment
设置环境变量。可以属于数组或字典两种格式。如果只给定变量的名称则会自动加载它在Compose主机上的值,可以用来防止泄露不必要的数据env_file
从文件中获取环境变量,可以为单独的文件路径或列表。如果通过docker-compose -f FILE指定了模板文件,则env_file中路径会基于模板文件路径。如果有变量名称与environment指令冲突,则以后者为准(环境变量文件中每一行都必须有注释,支持#开头的注释行)extends
基于已有的服务进行服务扩展。例如我们已经有了一个webapp服务,模板文件为common.yml。编写一个新的 development.yml 文件,使用 common.yml 中的 webapp 服务进行扩展。后者会自动继承common.yml中的webapp服务及相关的环境变量net
设置网络模式。使用和docker client 的 --net 参数一样的值pid
和宿主机系统共享进程命名空间,打开该选项的容器可以相互通过进程id来访问和操作dns
配置DNS服务器。可以是一个值,也可以是一个列表cap_add,cap_drop
添加或放弃容器的Linux能力(Capability)dns_search
配置DNS搜索域。可以是一个值也可以是一个列表此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。