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イメージのサイズ
TAGタグ名
IMAGE IDイメージID
CREATEDイメージ作成からの経過時間
SIZEイメージのサイズ
批量删除未使用的图像。
docker image prune
将镜像推送到Docker Hub
docker image push
操作容器
执行容器(基本形式)
docker container run -d -it [イメージ名 or イメージID]
在容器运行时的选项
オプション名内容備考–name実行コンテナの名前をつける開発用途ではよく利用されるが、本番ではあまり使用しないかも。同じ名前のコンテナは作成できないので-dバックグラウンドで起動(デーモン化)
-pコンテナのポート指定
-t疑似端末を有効にする-iがついていないと端末を起動しても入力できないので-itでセットで使う事が多い-rmコンテナ停止と同時にコンテナを破棄する
-vData Volumeの作成
-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ホストとコンテナのポート
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コンテナ実行時に実行するコマンドを指定
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