Dockerノート-紹介とインストール+ Centosのいくつかの構成

プロジェクト展開の歴史的進化

  1. 物理機械の時代

    展開が非常に遅く、コストが高く、リソースが浪費され、拡張と移行が難しく、ハードウェアによって制限されている

  2. 仮想マシンの時代

    1台の物理マシン上に複数の仮想マシンを作成でき、仮想マシンは互いに分離され、物理マシンのリソースをプールして管理できます。

    特徴:

    1. 複数の展開
    2. 物理マシンのリソースは、プーリングによって管理されます
    3. 異なる仮想マシン間で使用されるリソースは互いに分離されています
    4. 拡張しやすい
    5. ただし、オペレーティングシステムをインストールする必要があり、面倒です。
  3. コンテナ化の時代

    これは、オペレーティングシステムをインストールする必要のない仮想化テクノロジーとして簡単に理解できます。

    ここに画像の説明を挿入

コンテナ化技術の適用シナリオ

  1. 標準化された移行方法
  2. 統一されたパラメーター構成
  3. 自動展開
  4. アプリケーションクラスターの監視
  5. 開発・運用・保守間の便利なコミュニケーション

Alibaba Cloud / Tencent Cloudのコンテナ化されたアプリケーション:仮想マシンとDockerコンテナのハイブリッド方式を使用します。

ここに画像の説明を挿入

Dockeの紹介とインストール

前書き

  1. Dockerは、Goに基づく完全にオープンソースのアプリケーションコンテナエンジンです。
  2. サンドボックスメカニズムをフルに活用し、コンテナの作成または破棄のコストは非常に低くなります
  3. コンテナ化テクノロジーはDockerの製品であるだけでなく、Dockerはコンテナ化テクノロジーの代名詞です。
  4. Dockerには、特定の仮想化機能もあります。コンテナーの作成に加えて、ローカルの物理マシンからのリソースに適用することもできます。

特徴

  1. 標準化されたアプリケーションパッケージを提供します
  2. 必要なCPUやメモリの量など、このアプリケーションに必要なハードウェアリソースの量、これらの情報はすべてDockerに記述されています

バージョン

  1. Dockerは、2016年にCommunity Edition(CE)とEnterprise Edition(EE)に分割されました

Dockerをインストールする

CentOS7に基づく

# 第1个yum-utils组件,是yum安装工具包,可以简化安装源的配置过程
# 后2个组件,是docker做数据存储需要的驱动包
yum install -y yum-utils device-mapper-persistent-data lvm2

# 下面这个命令是上面yum-utils包提供的简化工具
# 用于修改yum的安装源
# 因为默认docker的源是在国外,很慢。所以将其修改为阿里云的安装源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 下面的命令,让yum自动检测,哪个安装源是最快的,并优先使用它
yum makecache fast

# 准备工作完毕,下面开始安装docker
yum -y install docker-ce

# 如果先前安装过docker,可以先根据下面步骤进行删除
yum list installed | grep docker
# 然后把列出来的yum包挨个用下面命令进行删除
sudo yum -y remove ****
# 最后,删除/var/lib/docker/,这个目录存放着docker的文件
rm -rf /var/lib/docker

Dockerサービスを開始します

# 启动docker服务
service docker start
# 或者
systemctl docker start
# 进行验证,查看docker版本号
docker version
[root@localhost ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.9
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        9d988398e7
 Built:             Fri May 15 00:25:27 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.9
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       9d988398e7
  Built:            Fri May 15 00:24:05 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

DockerはCSアーキテクチャであるため、DockerクライアントとDockerサーバーがあることがわかります。DockerコマンドはDockerクライアントによって提供され、デフォルトのDockerクライアントはローカルのDockerサーバーに接続します

Dockerコンテナを実行する

# 拉取hello-world镜像
docker pull hello-world
# 拉取完成后,创建并运行容器
docker run hello-world
[root@localhost ~]# docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

AlibabaCloudアクセラレーションサービスを構成して使用する

# 浏览器打开 aliyun.com
# 搜索 “容器镜像服务”
# 登录(使用支付宝扫码登录)
# 为自己的镜像服务创建密码,我的密码是*****
# 找到最左侧的镜像加速器
# 根据文档中的说明进行配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    
    
  "registry-mirrors": ["https://******.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

# /etc/docker/daemon.json 是docker的默认配置文件
# docker在启动时会自动加载这个文件
# 如此,docker在下载镜像时,会优先使用上面的地址进行镜像拉取

CentOSに関するその他の構成

起動時にセルフスタートとしてDockerを追加する

# 配置 centos 7 的服务
systemctl start docker # 启动docker服务
systemctl enable docker # 将docker服务设为开机自启动
systemctl list-unit-files # 查看所有服务 

Aliのyumソースを構成する

# centos 7配置阿里的yum源和epel源
#配置阿里云yum源
yum install -y wget
cd  /etc/yum.repos.d/
mv  CentOS-Base.repo CentOS-Base.repo.bak
wget  http://mirrors.aliyun.com/repo/Centos-7.repo
mv Centos-7.repo CentOS-Base.repo
#配置epel源
wget https://mirrors.aliyun.com/repo/epel-7.repo
#清除缓存并更新
yum clean all
yum makecache
yum update

ファイアウォール設定を変更して、インターフェースを外部に公開します

# 关于centos 7的防火墙,在docker运行时,需要做端口映射,并将centos服务器的端口对外暴露
systemctl stop firewalld # 关闭防火墙
systemctl start firewalld #开启
systemctl enable firewalld # 开机启动
systemctl disable firewalld # 取消开机启动
firewall-cmd --help # 查看帮助
firewall-cmd --state  # 查看防火墙状态
firewall-cmd --list-port # 查看已放行的端口
# 永久放行8000/tcp端口,放行完后需要reload一下
firewall-cmd --zone=public --add-port=8000/tcp --permanent
firewall-cmd --reload # 更新规则,不重启服务
firewall-cmd --complete-reload # 更新规则,重启服务

firewall-cmd --remove-port=8000/tcp --permanent
firewall-cmd --query-port=8000/tcp

llコマンドが見つからない状況について

# 关于ll命令找不到的情况
# ll不是linux原生命令,而是ls -l的别名
# 通过修改~/.bashrc文件,可以指定命令的别名
vi ~/.bashrc
# 打开.bashrc后,添加如下文本
alias ll = 'ls -l'
# 然后刷新一下.bashrc 即可
source ~/.bashrc

powerline-statusプラグインの構成について

# 安装powerline-status
sudo yum install epel-release
sudo yum install python-pip
pip install powerline-status
# 查看powerline安装位置
pip show powerline-status
# 配置 ~/.bashrc文件,添加如下内容
if [ -f `which powerline-daemon` ]; then
  powerline-daemon -q
  POWERLINE_BASH_CONTINUATION=1
  POWERLINE_BASH_SELECT=1
  . /usr/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh
fi

# 刷新~/.bashrc,使其生效
source ~/.bashrc

# 如何让vi实现代码高亮
# 先安装vim增强包
yum -y install vim-enhanced
# 设置vi和vim的别名
vi ~/.bashrc
# 或者
vi /etc/profile
# 打开文件后,添加命令别名
alias vi=vim
# 然后刷新一下
source ~/.bashrc
# 或者
source /etc/profile
# 然后用vi打开文件,即可看到代码高亮
# 默认是开启了代码高亮
# 也可以在vi环境下,使用
:syntax off # 来关闭代码高亮
:syntax on # 开启代码高亮

おすすめ

転載: blog.csdn.net/vcj1009784814/article/details/106270032