赞
踩
参考官方文档:https://docs.docker.com/engine/install/centos/
查看系统版本
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@localhost ~]#
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]#
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
首先要安装一个yum工具
yum install -y yum-utils
安装成功后,执行命令,配置Docker的yum源:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
最后,执行命令,安装Docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
查看安装的版本
docker -v
# 启动Docker systemctl start docker # 查看Docker的状态 systemctl status docker # 停止Docker systemctl stop docker # 重启 systemctl restart docker # 设置开机自启 systemctl enable docker # 关闭开机自启动 systemctl disable docker # 执行docker ps命令,如果不报错,说明安装启动成功 docker ps
这里以阿里云镜像加速为例。
首先访问阿里云网站:
https://www.aliyun.com/
注册一个账号。
在首页的产品中,找到阿里云的容器镜像服务:
点击后进入控制台:
首次可能需要选择立刻开通,然后进入控制台。
找到镜像工具下的镜像加速器:
具体命令
# 创建目录 mkdir -p /etc/docker # 复制内容,注意把其中的镜像加速地址改成你自己的 tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"] } EOF # 重新加载配置 systemctl daemon-reload # 重启Docker systemctl restart docker # 查看配置是否生效 docker info|grep Mirrors -A 1
DockerHub:https://hub-stage.docker.com/
官方(需要翻墙):https://hub.docker.com/
以mysql为例:
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql
https://hub-stage.docker.com/
进入官方的
或者
https://hub.docker.com/u/library
或者命令搜索
#搜索镜像:从网络中查找需要的镜像
docker search 镜像名称
例如:
docker search dvwa
docker输入这个命令进行拉取镜像
docker pull nginx
docker images
保存镜像到本地
查看帮助
docker save -o --help
保存镜像
docker save -o nginx.tar nginx:latest
docker rmi 镜像名:版本
例如:
docker rmi nginx:latest
查看帮助
docker load --help
本地拉取镜像
docker load -i nginx.tar
或者
docker load -i nginx.tar -q
docker run -d --name nginx -p 80:80 nginx -i,以交互模式运行容器,通常与 -t 同时使用 -t,启动容器后,为容器分配一个命令行,通常与-i同时使用 -v,目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录> -d,守护进程,后台运行该容器 -p,指定端口映射,格式:主机(宿主)端口:容器端口 -P,随机端口映射,容器内部端口随机映射到主机的端口 -u,以什么用户身份创建容器 --name "nginx-lb",容器名字 -m, --memory bytes,设置容器使用内存最大值 -h, --hostname string,指定容器的 host name --dns 8.8.8.8,指定容器 dns 服务器 -e username="ritchie",设置环境变量 --restart,Docker 重启后,容器是否自动重启 --privileged,容器内是否使用真正的 root 权限
docker ps :会列出出正在运行的容器信息。
docker ps -a :会列出当前服务器中所有的容器,无论是否在运行。
CONTAINER ID:每个容器的唯一标识符号,自动生成。类似于数据库中的主键。
IMAGE :创建容器使用的镜像名称。
COMMAND:运行容器时的命令。
CREATED:容器创建的时间。
STATUS:容器的运行状态,Up 17 hours 指容器已运行17小时。
docker ps -s:会列出容器的文件大小(容器增加的大小/容器的虚拟大小) docker ps -q:仅列出CONTAINER ID 字段 如批量停止所有容器:docker stop docker ps -a -q docker ps -l: 显示最后一个运行的容器(无论该容器目前处于什么状态) docker ps -n 数量x:显示最后 x 个运行容器,当x为1时和 -l 含义相同。(无论该容器目前处于什么状态) docker ps --no-trunc:不对输出进行截断操作,此时可以看到完整的COMMAND,CONTAINER ID docker -f :使用过滤器来过滤输出 目前支持过滤器: id (容器的id) label name(容器名称) exited (整数-容器退出状态码,只有在使用-all才有用) status 容器状态(created,restarting,running,paused,exited,dead) ancestor 过滤从指定镜像创建的容器 before (容器的名称或id),过滤在给定id或名称之后创建的容器 isolation (default process hyperv) (windows daemon only) volume (数据卷名称或挂载点),–过滤挂载有指定数据卷的容器 network(网络id或名称),过滤连接到指定网络的容器 示例: docker ps -f status=exited docker ps -f ancestor=597ce1600cf4 -f status=exited -a docker ps --formart {{.Names}}:以go的形式格式化输出列表 go模板 .ID 容器的ID .Image 镜像的ID .Command 容器启动的命令 .CreatedAt 创建容器的时间点 .RunngingFor 从容器创建到现在过去的时间 .Ports 暴露的端口 .Status 容器的状态 .Size 容器硬盘的大小 .Names 容器的名称 .Label 指定label的值 .Mounts 挂载到这个容器的数据卷名称 示例: docker ps --formart {{.Names}}---{{.Image}}
docker ps
或者查看所有的容器
docker ps -a
自定义查看容器信息
docker ps --format "table {{.ID}}\t{{.Image}}\{{.Ports}}\t{{.Status}}\t{{.Names}}"
# 停止一个容器
docker stop 容器i或者容器名
# 停止所有容器
docker stop $(docker ps -q)
示例一:
docker stop nginx
示例二:
docker start nginx
docker logs nginx
或者一直查看
docker logs -f nginx
说明:-it参数是可交互的模式 bash是命令行模式
docker exec -it nginx bash
exit
删除所有容器
docker rm $(docker ps -aq)
删除单个容器
docker rm 容器id(或者容器名)
或者用-f操作强制删除
docker rm -f 容器id(或者容器名)
示例一:
docker rm nginx
注意:
删除容器的时候,如果不强行删除的话,需要先停止容器
docker stop nginx
示例二:
docker rm $(docker ps -aq)
可用源
●Docker 官方中国区:https://registry.docker-cn.com
●网易:http://hub-mirror.c.163.com
●中国科技大学:https://docker.mirrors.ustc.edu.cn
●阿里云:https://y0qd3iq.mirror.aliyuncs.com
增加Docker的镜像源配置文件 /etc/docker/daemon.json
如果没有配置过镜像源该文件默认是不存在的
vim /etc/docker/daemon.json
在其中增加如下内容
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
service docker restart
docker info|grep Mirrors -A 1
查看命令帮助信息
docker volume --help
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx
docker volume ls
查看具体位置
docker volume inspect html
那么以后在宿主机的这个目录下操作文件和在docker容器中操作是一样的效果
mysql官方文档:https://hub-stage.docker.com/_/mysql
docker inspect 容器名(或者是ID)
docker inspect nginx
主要看Mounts的配置信息
"Mounts": [
{
"Type": "volume",
"Name": "html",
"Source": "/var/lib/docker/volumes/html/_data",
"Destination": "/usr/share/nginx/html",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": ""
}
],
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
-v /root/mysql/conf:/etc/mysql/conf.d \
mysql
创建成功后
注意:在运行之前,需要创建这些目录
cd /root
mkdir mysql
cd mysql
mkdir data
mkdir conf
mkdir init
在conf目录下创建配置文件hm.cnf,代码如下
[client]
default_character_set=utf8mb4
[mysql]
default_character_set=utf8mb4
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
然后在init目录下创建数据信息hmall.cnf
先删除容器
docker rm -f mysql
无法在连接数据库
但是数据还在宿主机上
再次重新创建容器
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
-v /root/mysql/conf:/etc/mysql/conf.d \
mysql
查看连接数据库,发现连接成功,并且数据都还在
官方文档:https://docs.docker.com/engine/reference/builder
docker network create 网络名
例如:
docker network create hm
docker network ls
docker network connect 网络名 容器名
例如:
docker network connect hm mysql
docker inspect mysql
build —— 构建(重新构建)项目中的服务容器 config —— 检测compose文件的错误 up —— 启动服务 down —— 停止容器 images —— 列出项目中所包含的镜像 logs —— 查看服务容器的日志 kill —— 发送 SIGKILL 信号来强制停止服务容器 port —— 查看某个容器端口所映射的公共端口 ps —— 列出项目中目前的所有容器 restart —— 重启项目中的服务 rm —— 删除所有停止状态的服务容器 run —— 在指定服务上运行一个命令 scale —— 设置指定服务运行的容器个数 stop —— 停止处于运行状态的容器 start —— 启动被stop的服务容器 top —— 查看各个服务容器内运行的进程 pause —— 暂停一个服务容器 unpause —— 恢复处于暂停状态中的服务
version: "3.8" services: mysql: image: mysql container_name: mysql ports: - "3306:3306" environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: 123 volumes: - "./mysql/conf:/etc/mysql/conf.d" - "./mysql/data:/var/lib/mysql" - "./mysql/init:/docker-entrypoint-initdb.d" networks: - new hmall: build: context: . dockerfile: Dockerfile container_name: hmall ports: - "8080:8080" networks: - new depends_on: - mysql nginx: image: nginx container_name: nginx ports: - "18080:18080" - "18081:18081" volumes: - "./nginx/nginx.conf:/etc/nginx/nginx.conf" - "./nginx/html:/etc/nginx/html" depends_on: - hmall networks: - new networks: new: name: hmall
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。