适合初学者的Docker基础教程
首先
目录
-
- Docker的基本概念
-
- Docker的基础命令
-
- Dockerfile的编写方式
-
- 关于yaml文件
- 关于docker compose
1. Docker的基本概念
-
- イメージ
-
- コンテナ
- Dockerfile
「イメージ」とは何ですか?
多个或者一个层组成的东西
图像中包含了以下信息,由图层传递。
-
- ベースイメージはなにか
-
- 何がインストールしてあるか
-
- 環境変数はどうなっているのか
- どういうファイルを配置しているか
请告诉我这是不是官方形象
「容器」是什么?
简而言之,就是个人电脑。
严格而言,是指在主机上隔离的区域。
容器的特点
-
- コンテナはイメージを元に作られます。
-
- dockerのCLIやAPIを使って、コンテナの生成、起動、停止が行えます。
-
- 複数のコンテナは独立していてお互いに影響を及ぼさなず、個別に動かすことができます。
- Docker Engine上なら、ローカル、仮想マシン、クラウド環境でも動きます。
Dockerfileについて
简单来说,这是一个环境设置文件。
严格来说,这是一个用于在现有图像上叠加图层的文件。
为了创建符合自己需求的镜像,仅通过DockerHub提供的镜像存在问题,因此需要创建Dockerfile。
2. Docker的基本命令
-
- 构建镜像(docker image build)
-
- 启动容器(docker container run)
- 在容器内执行操作(docker exec)
イメージを作る
docker image build はDockerfileからイメージを作成するコマンドです。
DockerHubに上がっているイメージをそのままbuildしてもいいですし、Dockerfileから独自のイメージをbuildしてもいい
启动容器
用docker container run命令从镜像启动容器。
ここで大切なことは、このコマンドはイメージからコンテナを1つだけ作るということです。
このコマンドは、大量にオプションがあるので公式リファレンスでオプションを調べてその都度使い方を調べて覚えていくと良いと思います。
在Docker容器中运行,同时执行多个命令。
- image pull(git pullとやってることは同じでDockerHubからimageをpullしています)
- container create
- container start
在集装箱内进行某种操作
container execは起動したコンテナにだけ命令を送るコマンドです。
起動したコンテナにだけ送るコマンドなのでdocker container runした後でないと使えません。
我认为,您可以在官方参考文档上查找选项,并逐个了解如何使用这个命令,这样逐步记住它们会很好。
補足説明
コマンドを学習するときは、形に注目しましょう
docker image build(イメージをビルドする)
docker container run(コンテナを起動する)
docker container exec(コンテナ内で操作をする)
これらすべてに共通することは、AをBするということです
3. Dockerfileの書き方
FROM ruby:3.1.2
# ライブラリのインストール
RUN apt-get update -qq
#git activestarage sqlite3
RUN apt-get install -y git imagemagick libmagick++-dev sqlite3
#nodejs 16のインストール
#nodejs ver.16だとwebpackerと相性相が悪い
RUN curl -sL https://deb.nodesource.com/setup_16.x | bash -
RUN apt install -y nodejs
#yarnのインストール
RUN npm install n -g
RUN npm install -g yarn
RUN gem install rails -v 6.1.4
#workingディデクトリの作成
RUN mkdir /app
WORKDIR /app
COPY Gemfile Gemfile.lock /app
#Gemfileのコピーとインストール
RUN bundle install
ENTRYPOINT ["/app/entrypoint.sh"]
CMD ["rails", "server", "-b", "0.0.0.0"]
FROM : ベースイメージを指定する
RUN : 任意のコマンドを実行する
COPY : ホストマシンのファイルをイメージに追加する
CMD : デフォルト命令を指定する(.yamlファイルに記述できるから不要)
因为时间不够,所以请参考以下官方参考资料。
4. 关于yaml文件
これが何を意味しているのか?(用語は公式リファレンスで調べてください)
docker コマンドの後ろのoptionやパラメータをyamlファイルで指定することができます。
具体示例
app:
container_name: docker-rails-app
build: .
dockerfile: docker/app/Dockerfile
volumes:
- .:/app
command:bash -c "bundle exec rails s -p 3000 -b '0.0.0.0'"
ports:
- "3000:3000"
container run –name
太文字の部分を、.yamlファイルで指定したdocker-rails-nameで置き換えてくれます。
container run [command]
太文字の部分を、.yamlファイルで指定したbash -c “bundle exec rails s -p 3000 -b ‘0.0.0.0’”で置き換えてくれます。
補充:
上述的Dockerfile和.yaml文件沒有關聯。僅僅作為一個例子提供。
5. 关于Docker Compose
-
- Dockerfile
-
- docker image build
- docker container run
docker compose可以代替上述的docker image build和docker container run操作。换句话说,只要.yaml文件和Dockerfile正确配置,就可以通过执行docker compose命令自动根据.yaml文件中的内容进行操作,而无需每次针对每个容器执行docker image build和docker container run。
因此,如果要操作Docker实际上需要启动容器。
docker compose up
只需要这一个
要停止已经启动的容器。
docker compose down
就是这样了。
关于Docker的介绍就到这里为止!!
追加说明
如果不理解docker compose up / down,请记住:
up是开启电脑电源
down是关闭电脑电源
就这样记住就可以了!(实际上并不好……)
如果简单总结到这里的话
-
- 创建Dockerfile(环境配置文件)。
-
- 创建.yaml文件(用于同时执行多个命令)。
-
- 执行docker compose up(开启电脑电源)。
- 执行docker compose down(关闭电脑电源)。
終わりに
参考文献:
Docker官方文档
这篇文章与我学习的教材有很大的重叠。因为这是我学习的来源…