Команда основного использования Docker

задняя часть Docker

Команда основного использования Docker

предисловие

Когда я впервые увидел других, используя докер, у меня было много путаницы. Зачем использовать Docker и как использовать Docker? Почему конфигурация Docker так сложно? Почему я не могу получить доступ к сети? Каковы факторы, которые мешают мне учить докера? На самом деле автор также очень глуп, и есть много очков, которые не ясны. Поделиться кстати.

Часы сомнения

  • Q1: Почему мой набор сервисов не помещен в контейнер (Java Mysql Nginx Redis и т.д.)
  • A1: Поскольку необходимо поддерживать сеть в контейнере, поддерживать порты и т. д., Docker создан для быстрого создания среды, а Docker лучше всего подходит как служба и контейнер, поэтому о нем легко заботиться.
  • Q2: Можно ли использовать Docker в производственной среде?
  • A2: Если в компании нет выделенной команды эксплуатации и обслуживания, не рекомендуется использовать среду, развернутую Docker, в качестве производственной среды, потому что это необходимо не только для поддержки проекта и промежуточного программного обеспечения, но и для решения этих проблем. после возникновения проблем в Docker или K8s.Чтобы решить проблему с Docker. Если у вас нет специальной команды по эксплуатации и обслуживанию, лучше всего использовать некоторые облачные сервисы, такие как RDS, SLB и т. д. По крайней мере, кто-то поможет вам поддерживать вашу базу данных и сервисы.
  • Q3:

основные команды

Скачать зеркало

# 以redis为例子
docker pull redis

Изображение времени выполнения

docker run \
-d \ # 后台运行
--name redis6 \ # 自定义名字
-p 6379:6379 \ # 端口映射
redis # 镜像名称
docker run -d --name redis6 -p 6379:6379 redis redis-server --appendonly yes --requirepass "123456" # 完整命令

в контейнер

Первый (не рекомендуется, при выходе из контейнера с помощью команды exit контейнер будет остановлен)

docker attach 容器id

секунда

docker exec -it 容器id /bin/bash

Приостановить контейнер

docker stop 容器id

запустить контейнер

docker start 容器id

Запрос списка контейнеров

docker ps -a # 查看所有容器
docker ps # 查看运行中的容器

беги и начинайРазница:

  • run — создать новый контейнер
  • start — запустить уже созданный контейнер

Просмотр информации о контейнере

docker inspect 容器id

устанавливать

Введение в монтаж

Все файлы в контейнере находятся внутри контейнера и не имеют ничего общего с вашим текущим компьютером. Что, если контейнер будет удален? Но я хочу сохранить данные как mysql.Мне нужно только сменить компьютер и скопировать весь контейнер, что слишком хлопотно! Поэтому вам нужно использовать файл контейнера и текущий файл хоста как один.карта

Учебник по командам

  • Параметр -v host path: путь к контейнеру
# 以mysql为例子
docker run -d --name mysql8 -p 3306:3306 -v /data/mysql8/config:/etc/mysql/conf.d -v /data/mysql8/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
# 以上的命令可以参考https://hub.docker.com/_/mysql里面有详细介绍

Почему вы знаете так много путей или параметров?

  • Каждому промежуточному ПО или контейнеру базы данных может потребоваться множество настроек, таких как пароли, пути к постоянным файлам и т. д. Итак, откуда мы знаем, что путь
  1. может войтиhub.docker.com найдите нужный вам контейнер и прочитайте документацию
  2. Я нашел его в контейнере (этот метод немного глупо. Я нашел так в начале.)

Интернет

Как общаться между контейнерами

Хотя контейнеры могут взаимодействовать друг с другом, каждый раз, когда контейнер перезапускается, IP-адрес отличается от последнего раза, поэтому связь будет очень сложной.

демонстрация

# 先拉个centos镜像下来
docker pull centos
# 创建个容器
docker run -d -it --name centos1 centos
docker run -d -it --name centos2 centos

docker inspect centos1_id
  • Перехватить некоторую информацию о контейнере
[
    {
        "NetworkSettings": {
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "9e7ed6d29ca3474de04409833e39b7c7965c7c63d3a1f509886a7a998e4825f8",
                    "EndpointID": "41230bf523fac8fa4933989d98baaaa7655fba5c5dadd14e63839ffe868ed3f8",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.4",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:04",
                    "DriverOpts": null
                }
            }
        }
    }
]
docker inspect centos2_id
[
    {
        "NetworkSettings": {
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "9e7ed6d29ca3474de04409833e39b7c7965c7c63d3a1f509886a7a998e4825f8",
                    "EndpointID": "8ae77d46887c795983ee7a8fb96951d05e236b4ca4b4caa5d5964f892e18a476",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.5",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:05",
                    "DriverOpts": null
                }
            }
        }
    }
]
  • Вышеупомянутый ip-адрес centos1172.17.0.4
  • Вышеуказанный Centos2 IP172.17.0.5

Решать проблему

docker network create centos-network
docker run -d -it --network centos-network --name centos3 centos
docker run -d -it --network centos-network --name centos4 centos
docker exec -it centos3_id /bin/bash
ping centos4 
# 所以当创建了一个network后 容器都能加入到这个网络里面,很方便
  • Это может решить проблему несоответствия ip после каждого перезапуска контейнера.

резюме

На самом деле, это будет очень хлопотно, когда вы впервые используете контейнер.

  1. Я не знаю команду docker и параметры, требуемые контейнером
  2. Каждый раз, когда я захожу на официальный сайт, чтобы узнать, какие параметры или Baidu

Но по сравнению с загрузкой файлов каждый раз, это экономит много усилий, чтобы зайти и настроить, а настроить и сохранить используемые команды один раз, вы можете использовать их позже, и вам не нужно повторять множество изменений.
3. На самом деле, в некоторых небольших компаниях нет профессиональной эксплуатации и обслуживания, не используйте докер в производственной среде, в противном случае действительно проблема, но и поддерживает проект, но и поддерживать докер.