1.docker常用命令
bash
docker -v # 查看docker版本,检查是否安装成功
docker ps # 查看运行的容器
docker ps -a # 查看所有容器
docker images # 查看本地镜像
docker info # 查看docker的系统级信息
docker pull [image] # 拉取镜像
docker run [image] # 运行容器
docker restart [container] # 重启容器
docker stop [container] # 停止容器
docker stats [container] # 查看容器资源使用情况
docker inspect [container] # 查看容器元数据
docker logs -n 1000 [container] # 查看容器的前1000条日志信息
docker exec -it [container] /bin/bash # 进入运行中的容器内部
docker save nginx:latest > nginx.tar # 保存单个镜像
docker load -i nginx.tar # 从tar文件加载镜像
docker network create -d bridge l-bridge # 创建一个新的网络,命名为l-bridge
docker network ls # 显示所有网络
docker network connect l-bridge test # test容器加入到自定义网络
docker inspect l-bridge # 查看l-bridge网络里的容器
2.docker网络模式docker中有5中网络模式,可以通过--net=***指定容器的网络模式
bash
bridge模式 # 默认,外界访问容器内的服务时,需要访问宿主机的 IP 以及宿主机的端口 port
host模式 # 容器的IP地址即为宿主机的IP地址
container模式 # 容器会共享其他容器的网络环境
overlay模式 # 跨主机通讯
none模式 # 不为容器构造任何网络环境,容器只能使用127.0.0.1的本机网络
3.部署中常用命令参考
bash
# 可先拉取服务中镜像,时间取决于网络情况,可配置docker采用国内镜像源
docker-compose pull
# 构建并启动服务中容器
docker-compose up -d
# 停止并删除服务中容器
docker-compose down
# 创建data文件夹
mkdir /var/data
# 文件夹分配读写可执行权限
sudo chmod 777 /var/data
4.docker网桥
网桥用于各个容器间通讯,如果各个容器是单独运行的,需要使用下面命令创建网桥
bash
docker network create -d bridge l-bridge
5.docker-compose常用命令
bash
docker-compose -v # 查看docker-compose版本,检查是否安装成功
docker-compose up -d # 构建并启动服务中容器
docker-compose down # 停止并删除服务中容器
docker-compose ps # 列出服务中所有容器
docker-compose start # 启动服务中的容器
docker-compose stop # 停止服务中正在运行的容器
docker-compose restart # 重启服务中的容器
docker-compose logs # 查看服务中容器的输出
docker-compose pull # 拉取服务中依赖的镜像
docker-compose config # 验证并查看compose文件配置
6.安装各个软件实列
参数说明
bash
--name # 容器名称
--publish # 容器端口映射
--volume # 挂载卷路径,容器文件持久化到服务器
--env # 设置容器环境变量
--network # 网络模式 container/none/bridge/host几种
--restart # 重启方式 no/on-failure/always/unless-stopped几种
--detach # 后台运行
mysql
bash
docker run \
--name mysql \
--publish 3306:3306 \
--env TZ=Asia/Shanghai \
--env MYSQL_DATABASE="test" \
--env MYSQL_ROOT_PASSWORD=123456\
--volume /var/data/mysql/mysql:/var/lib/mysql \
--network l-bridge \
--restart unless-stopped \
--detach \
mysql:8.0 \
--character-set-server=utf8 \
--collation-server=utf8_unicode_ci \
--lower-case-table-names=1
redis
bash
docker run \
--name myredis \
--publish 6379:6379 \
--volume /var/data/redis:/usr/local/etc/redis \
--volume /var/data/redis/data:/data \
--network l-bridge \
--restart unless-stopped \
--detach \
redis:7.0.0 \
--requirepass "123456" \
--appendonly yes
influxdb
bash
docker run -d \
--name influxdb \
-p 8086:8086 \
-v /var/data/influxdb2:/var/lib/influxdb2 \
-e DOCKER_INFLUXDB_INIT_MODE="setup" \
-e DOCKER_INFLUXDB_INIT_USERNAME="admin" \
-e DOCKER_INFLUXDB_INIT_PASSWORD="admin123" \
-e DOCKER_INFLUXDB_INIT_ORG="test" \
-e DOCKER_INFLUXDB_INIT_BUCKET="device_log" \
-e DOCKER_INFLUXDB_INIT_ADMIN_TOKEN="inX0k-IPfSgKg6AIfoZm6Mv0DQyQOKCkfvs5ZF3a836Yzx2Ew9QgxsHev40_2gztuMn6tofwyS6nfbT4cD-SeA==" \
--network l-bridge \
influxdb:2.7.5
bash
docker run \
--name emqx \
--publish 1883:1883 \
--publish 8083:8083 \
--publish 8883:8883 \
--publish 8084:8084 \
--publish 18083:18083 \
--env TimeZone=Asia/Shanghai \
--volume /etc/localtime:/etc/localtime \
--restart unless-stopped \
--detach \
emqx:5.1