1.删除服务器中原本安装的docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.安装yum-utils
yum install -y yum-utils device-mapper-persistent-data lvm2
3.为yum源添加docker仓库位置
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
4.yum安装docker
yum install -y docker-ce docker-ce-cli containerd.io
5.设置docker开机自启
systemctl start docker
systemctl enable docker
6.常用命令
# 1.查看容器状态
docker ps
docker ps -a
# 2.进入容器
docker exec -it mysql(名字或者ID) /bin/bash
# 3.镜像自启动
docker update redis --restart=always
docker update mysql --restart=always
# 4.搜索镜像
docker search java
# 5.下载镜像
docker pull java:8
# 6.列出镜像
docker images
# 7.删除镜像
- 指定名称删除镜像:docker rmi java:8
- 指定名称删除镜像(强制):docker rmi -f java:8
- 删除所有没有引用的镜像:docker rmi `docker images | grep none | awk '{print $3}'`
- 强制删除所有镜像:docker rmi -f $(docker images)
# 8.打包镜像
- -t 表示指定镜像仓库名称/镜像名称:镜像标签 .表示使用当前目录下的Dockerfile文件
docker build -t mall/mall-admin:1.0-SNAPSHOT .
# 9.推送镜像
- 登录Docker Hub
docker login
- 给本地镜像打标签为远程仓库名称
docker tag mall/mall-admin:1.0-SNAPSHOT macrodocker/mall-admin:1.0-SNAPSHOT
- 推送到远程仓库
docker push macrodocker/mall-admin:1.0-SNAPSHOT
# 10.停止容器
docker stop nginx
# 11.启动容器
docker start nginx
# 12.删除指定容器
docker rm nginx
# 13.查看容器全部日志
docker logs nginx
# 14.动态查看容器日志
docker logs -f nginx
# 15.查看容器的IP地址
docker inspect --format '{{ .NetworkSettings.IPAddress }}' nginx
# 16.修改容器的启动方式,将容器启动方式改为always
docker container update --restart=always nginx
# 17.同步宿主机时间到容器
docker cp /etc/localtime nginx:/etc/
# 18.指定容器时区
docker run -p 80:80 --name nginx \
-e TZ="Asia/Shanghai" \
-d nginx:1.17.0
# 19.查看容器资源占用状况,
- 查看指定容器资源占用状况,比如cpu、内存、网络、io状态:docker stats nginx
- 查看所有容器资源占用情况:docker stats -a
- 查看所有容器 docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
# 20.查看容器磁盘使用情况
docker system df
# 21.使用root账号进入容器内部
docker exec -it --user root $ContainerName /bin/bash
# 22.查看所有网络
docker network ls
# 23.创建外部网络
docker network create -d bridge my-bridge-network
查看网络
docker network inspect my-bridge-network
# 24.指定容器网络
docker run -p 80:80 --name nginx \
--network my-bridge-network \
-d nginx:1.17.0
# 25.查看Docker镜像的存放位置:
docker info | grep "Docker Root Dir"
# 26.查看Docker占用的磁盘空间情况:
docker system df
# 27.删除所有关闭的容器:
docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm
# 28.删除所有dangling镜像(没有Tag的镜像):
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
# 29.删除所有dangling数据卷(即无用的 volume):
docker volume rm $(docker volume ls -qf dangling=true)
# 30.停用并删除所有运行中容器
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
# 31.删除那些已停止的容器、dangling 镜像、未被容器引用的 network 和构建过程中的 cache
docker system prune
# 32.按照条件删除镜像
docker rmi --force `docker images | grep 条件值 | awk '{print $3}'`
7.配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://n6gjvesl.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
8.Docker创建镜像一些指令
指令举例:
docker run \
--detach \
-p 8443:443 \
-p 8090:80 \
-p 9922:22 \
-v /mydata/gitlab/etc:/etc/gitlab \
-v /mydata/gitlab/log:/var/log/gitlab \
-v /mydata/gitlab/data:/var/opt/gitlab \
--privileged=true \
--name gitlab \
gitlab/gitlab-ce
-v:将宿主机上的文件挂载到宿主机上,格式为:宿主机文件目录:容器文件目录;
-i: 以交互模式运行容器,通常与 -t 同时使用命令解释:
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d: 后台运行容器,并返回容器ID
-e: 指定参数,比如给myql设置密码
-p: 8090:80 将容器内80端口映射至宿主机9980端口,这是访问gitlab的端口
-p: 9922:22 将容器内22端口映射至宿主机9922端口,这是访问ssh的端口
--restart always 容器自启动
--privileged=true 让容器获取宿主机root权限
--name gitlab设置容器名称为gitlab
gitlab/gitlab-ce 镜像的名称,这里也可以写镜像ID
9.安装补全工具
yum install -y bash-completion
一、Docker Compose
Compose 简介
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
- 使用 Dockerfile 定义应用程序的环境。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
docker-compose.yml 的配置案例如下(配置参数参考下文):
实例:
# yaml 配置实例
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
Compose 安装
Linux
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
{message type="info"}要安装其他版本的 Compose,请替换 1.24.1。{/message}
将可执行权限应用于二进制文件:
$ sudo chmod +x /usr/local/bin/docker-compose
创建软链:
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功:
$ docker-compose --version
{message type="info"}注意: 对于 alpine,需要以下依赖包: py-pip,python-dev,libffi-dev,openssl-dev,gcc,libc-dev,和 make。{/message}
二、Docker Compose使用
2.1.准备工作
2.1.1 创建一个测试目录:
$ mkdir composetest
$ cd composetest
2.1.2 在测试目录中创建一个名为 app.py 的文件,并复制粘贴以下内容:
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.\n'.format(count)
{message type="info"}在此示例中,redis 是应用程序网络上的 redis 容器的主机名,该主机使用的端口为 6379。{/message}
2.1.3在 composetest 目录中创建另一个名为 requirements.txt 的文件,内容如下:
flask
redis
2.2 创建 Dockerfile 文件
2.2.1 在 composetest 目录中,创建一个名为的文件 Dockerfile,内容如下:
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]
2.2.2 Dockerfile 内容解释:
①:FROM python:3.7-alpine: 从 Python 3.7 映像开始构建镜像。
②:WORKDIR /code: 将工作目录设置为 /code。
③:ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
设置 flask 命令使用的环境变量。
④:RUN apk add --no-cache gcc musl-dev linux-headers: 安装 gcc,以便诸如 MarkupSafe 和 SQLAlchemy 之类的 Python 包可以编译加速。
⑤:COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
复制 requirements.txt 并安装 Python 依赖项。
⑥:COPY . .: 将 . 项目中的当前目录复制到 . 镜像中的工作目录。
⑦:CMD ["flask", "run"]: 容器提供默认的执行命令为:flask run。
2.3 创建 docker-compose.yml
2.3.1 在测试目录中创建一个名为 docker-compose.yml 的文件,然后粘贴以下内容:
# yaml 配置
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
该 Compose 文件定义了两个服务:web 和 redis。
①:web:该 web 服务使用从 Dockerfile 当前目录中构建的镜像。然后,它将容器和主机绑定到暴露的端口 5000。此示例服务使用 Flask Web 服务器的默认端口 5000 。
②:redis:该 redis 服务使用 Docker Hub 的公共 Redis 映像。
2.4 使用 Compose 命令构建和运行您的应用
2.4.1 在测试目录中,执行以下命令来启动应用程序:
docker-compose up
2.4.2 如果你想在后台执行该服务可以加上 -d 参数:
docker-compose up -d
评论