Docker的基本操作(供初学者使用)

简而言之。

我会总结关于Docker镜像和容器的基本操作。

图像处理

构建形象

docker image build -t [イメージ名:タグ名] [Dockerfileを配置しているディレクトリパス]

获取图像

docker image pull [イメージ名:タグ名]

图像列表

docker image ls

以下是“docker image ls”的执行示例。

docker image ls
REPOSITORY  TAG     IMAGE ID       CREATED         SIZE
nginx       latest  a6bd71f48f68   4 days ago      187MB
python      latest  caacd5b6b541   5 weeks ago     1.02GB
ubuntu      latest  e4c58958181a   7 weeks ago     77.8MB

表示詳細內容

項目名内容備考REPOSITORYリポジトリ名
TAGタグ名
IMAGE IDイメージID
CREATEDイメージ作成からの経過時間
SIZEイメージのサイズ

批量删除未使用的图像。

docker image prune

将镜像推送到Docker Hub

docker image push

操作容器

执行容器(基本形式)

docker container run -d -it [イメージ名 or イメージID]

在容器运行时的选项

オプション名内容備考–name実行コンテナの名前をつける開発用途ではよく利用されるが、本番ではあまり使用しないかも。同じ名前のコンテナは作成できないので-dバックグラウンドで起動(デーモン化)
-pコンテナのポート指定8080:80とか指定するとホストの8080ポートへのアクセスはコンテナの80番にフォワードする-idocker起動後にコンテナ側の標準入力をつなぎっぱなしにする
-t疑似端末を有効にする-iがついていないと端末を起動しても入力できないので-itでセットで使う事が多い-rmコンテナ停止と同時にコンテナを破棄する
-vData Volumeの作成ホスト側ディレクトリ:コンテナ側ディレクトリで指定する

展示容器清单

docker container ls

选项

オプション名内容備考–filterlsの結果を指定の条件でfiletrするコンテナ名で抽出するときは"name=xxx"、イメージで抽出するときは、"ancestor=xxx:xx"-a終了したコンテナを取得する

以下是docker container ls的执行示例。

docker container ls    
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
df8883a1952a   ubuntu    "/bin/bash"   3 minutes ago   Up 3 minutes             elated_nash

详细表示内容

項目名内容備考CONTAINER IDコンテナに付与されるユニークID
IMAGEコンテナ作成に使用されているイメージ
COMMANDコンテナで実行されているプロセス
CREATEDコンテナ実行からの経過時間
STATUSコンテナの状態
PORTSホストとコンテナのポート-pで指定したものオプションなしならポートフォワードもなしNAMESコンテナの名前--nameオプション使用すた場合は、--nameで指定したもの

停止容器

docker container stop [コンテナ名 or コンテナID]

重新启动容器

docker container restart [コンテナ名 or コンテナID]

销毁容器

docker container rm [コンテナ名 or コンテナID]
※基本停止中のコンテナしか破棄できないが、`-f`オプションで強制破棄できる。

获取容器标准输出

docker container logs [コンテナ名 or コンテナID]

在运行中的容器中执行命令

docker container exec [コンテナ名 or コンテナID] [xxx(実行するコマンド)]

(以下のようにするとあたかもコンテナ内にSSHしたかのような使い方もできる)
docker container exec -it コンテナIDかコンテナ名 bash

主机和容器之间的文件复制 hé zhī de

docker container cp [コンテナ名 or コンテナID]:[コンテナ内のコピー元] [ホスト側のコピー先]
docker container cp [ホスト側のコピー元] [コンテナ名 or コンテナID]:[コンテナ内のコピー先]

批量删除未使用的容器

docker container prune

容器系统资源使用情况

docker container stats

Dockerfile的编写方式

为了创建原始镜像,需要编写Dockerfile,下面以创建nginx原始镜像为例进行说明。我已将其上传至GitHub(非常简单的一个)。

 

# dockerイメージのベースとなるイメージを指定、最新の安定版1.24.0をタグ指定
# https://nginx.org/en/download.html
FROM nginx:1.24.0

# コンテナに入って操作するときvim使いたいので、aptでインストールしておく
RUN apt update
RUN apt install -y vim

# ホスト側で用意したnginx設定ファイルをコンテナ側にコピー
COPY ./conf/default.conf /etc/nginx/conf.d/default.conf
# 初期のindex.htmlを送付
COPY ./index.html /usr/share/nginx/html/index.html

# 公開ポートを指定、今回はwebなので80番開けておく
EXPOSE 80

# デーモンはオフにしてフォアグラウンドで実行
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]

在克隆了上述存储库的目录中执行以下命令,将会构建图像。

# git clone
git clone git@github.com:Shota0616/nginx-dockerfile.git

# イメージのbuild
docker image build -t nginx-base .

Dockerfile的说明

項目名内容備考FROMDockerイメージのベースとなるイメージを指定
RUNDockerイメージ作成時に実行されるコマンドを指定
COPYホスト上のファイルやディレクトリなどをコンテナ内にコピー
EXPOSEコンテナの開放ポートを指定
CMDコンテナ実行時に実行するコマンドを指定

其他

批量删除未使用的docker资源(镜像、容器、卷、网络)。

docker system prune

登入Docker Hub

docker login -u [ユーザーID] -p [パスワード]

Kubernetes和kubectl的安装

# linux(ubuntu)
sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl

# linux(centos)
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubectl

# macos
brew install kubectl

# Windows
curl -LO https://dl.k8s.io/release/v1.28.4/bin/windows/amd64/kubectl.exe