docker ps -a --format "table \t\t"
docker iamges を実行して、ここに出てこなかったイメージは使われていない。
docker tag <変更前のイメージ名:タグ名> <変更後のイメージ名:タグ名>docker run -it ubuntu /bin/bash"Mounts": [
{
"Type": "bind",
"Source": "/share",
"Destination": "/share",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
docker inspect --format '' container-name | json_pp
docker run -p 8080:80 -d httpddocker run -it --cap-add=SYS_TIME ubuntu /bin/bashdocker start -ai $(docker ps -lq)docker start -ai 1adocker commit <コンテナID> <イメージ名>docker run --name=volume-container -v new-vol-for-container:/mnt busyboxdocker run -it --rm --mount source=<Volume>,target=<MountPoint> alpine shdocker commit <コンテナID・コンテナ名> <イメージ名>:<タグ>docker imagesdocker save -o <出力ファイル名>.tar <イメージID>sudo docker load -i <ファイル名>.tarsudo docker imagessudo docker image tag <イメージID> <イメージ名>[:タグ](例)
docker export container_name | gzip -c > container_name.tar.gz
docker inspect container_name
"Mounts": [
{
"Type": "bind",
"Source": "/share",
"Destination": "/share",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
cat container_name.tar.gz | gzip -d | docker import - container_image_name:latest
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
container_iamge_name latest 9dd1d1360320 11 seconds ago 8.43GB
docker run -it --name container_name -v /share:/share container_image_name /bin/bash
sudo systemctl stop dockersudo systemctl stop dockercd /var/lib/
ssh <移行先IP> -- sudo tar -C /var/lib/ -cvf - docker/ | sudo tar xf -
(参考) Dockerのイメージ/コンテナを他マシンへ移設するに最終的に”うりゃ!”っとしたはなし
※Vagrant/VirtualBox 環境で upgrade すると、addtional tools が使えなくなってネットワークや共有フォルダで問題が出る可能性があるので、簡単なテストをして確認しておいた方がよさそう。
まずは upgrade した環境で小さなコンテナを立ててネットワーク接続を確認するなど(例: curl https://www.xxxx.co.jp/。
sudo dnf remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine podman runc
sudo dnf install -y dnf-utils
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
OS 起動時に自動的に Docker サービスが起動するように設定
sudo systemctl enable --now docker
OS 再起動して Docker サービスの状態を確認
sudo systemctl status docker
ユーザーから Docker を操作できるよう docker グループに追加
sudo usermod -aG docker $USER
即時反映
newgrp docker
動作確認用 Docker イメージを使ってコンテナを起動して確認(コンテナ起動後すぐ終了)
docker run hello-world
エラーが出ていないことを確認したらコンテナを削除
docker rm hello-world
docker-ce.x86_64 3:19.03.2-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.0-3.el7 docker-ce-stable
(中略)
docker-ce.x86_64 17.03.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# バージョン確認
docker -v
# セキュリティリスクを認識した上でログインユーザーを docker グループに追加
sudo usermod -aG docker $USER
# いったんログアウントすると反映される
exit
# 再ログイン後に docker コマンドを実行できることを確認
docker images
podman desktop
brew install podman-desktop
brew でインストール後に /Applications/Podman Desktop.app を起動して CLI をインストール。
curl -L https://github.com/docker/compose/releases/download/<バージョン>/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker run -it --rm -v /vagrant/:/mnt centos:centos7.5.1804 bashvi Dockerfile
FROM centos:centos7
LABEL maintainer="Hoge<hoge@xxx.com>"
# Overwrite MOUNTPOINT by using --env at "docker run"
ENV MOUNTPOINT="/tmp"
RUN mkdir -p ${MOUNTPOINT} && chmod 777 ${MOUNTPOINT}
# Install reequired packages
RUN yum install -y nfs-utils
# Place s6-overlay to enable services
ADD https://github.com/just-containers/s6-overlay/releases/download/v1.21.4.0/s6-overlay-amd64.tar.gz /tmp/
RUN tar xzf /tmp/s6-overlay-amd64.tar.gz -C / --exclude="./bin"
RUN tar xzf /tmp/s6-overlay-amd64.tar.gz -C /usr ./bin
RUN mkdir -p /etc/cont-init.d \
&& printf "#!/usr/bin/with-contenv sh\nexportfs -r" >> /etc/cont-init.d/00-config
RUN mkdir -p /etc/services.d/rpcbind \
&& printf "#!/usr/bin/with-contenv sh\nrpcbind -f" >> /etc/services.d/rpcbind/run \
&& chmod 755 /etc/services.d/rpcbind/run \
&& cat /etc/services.d/rpcbind/run
RUN mkdir -p /etc/services.d/mountd \
&& printf "#!/usr/bin/execlineb -P\nforeground { rpc.nfsd -N 2 -N 3 }\nrpc.mountd -F -N 2 -N 3" >> /etc/services.d/mountd/run \
&& chmod 755 /etc/services.d/mountd/run \
&& cat /etc/services.d/mountd/run
# Expose ports for NFS
EXPOSE 111/udp 111/tcp 2049/udp 2049/tcp
RUN echo "${MOUNTPOINT} *(ro,fsid=0,root_squash,no_subtree_check,insecure)" >> /etc/exports
RUN ls -la /etc/services.d/mountd
# Kick init script of s6-overlay
ENTRYPOINT /init
docker build -t nfs-server1 .
docker run -it --rm --net host --privileged nfs-server1
※docker-machine だとエラーが発生(Unable to access /proc/fs/nfsd)。Ubunt 18.04 では成功。
(参考) Dockerコンテナ同士のNFSのサーバ・クライアント疎通サンプル
mkdir -p ~/docker/redmine-sqlite
cd ~/docker/redmine-sqlite
docker run --name redmine-sqlite -p3032:3000 -v$PWD/db:/usr/src/redmine/sqlite -v$PWD/files:/usr/src/redmine/files -v$PWD/themes:/usr/src/redmine/themes -v$PWD/plugins:/usr/src/redmine/plugins redmine:6.1.2-alpine
sudo cp -pi ~/backup/redmine.db ~/docker/redmine-sqlite/db/redmine.db
sudo cp -pir ~/backup/files/* ~/docker/redmine-sqlite/files/
sudo chown -R 999:999 ~/docker/redmine-sqlite/*
docker start redmine-sqlite
※db, files のバックアップからのコピーはコンテナ作成前にしておいてもよさそう。
#!/bin/bash
set -e
SRC="/home/hoge/docker/redmine-sqlite/db/redmine.db"
DST_DIR="/mnt/c/Users/hoge/Documents/docker/redmine-sqlite"
# DB が存在しない場合は何もしない
[ -f "$SRC" ] || exit 0
mkdir -p "$DST_DIR"
# 曜日取得(mon, tue, wed...)
DAY=$(date +%a | tr '[:upper:]' '[:lower:]')
cp -p "$SRC" "$DST_DIR/redmine-${DAY}.db"
sudo chmod 755 /usr/local/bin/backup-redmine-db.sh
[Unit]
Description=Daily Backup Redmine SQLite DB
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup-redmine-db.sh
sudo vi /etc/systemd/system/backup-redmine-db.timer
[Unit]
Description=Run Redmine DB backup daily
[Timer]
OnCalendar=*-*-* 04:00:00
Persistent=true
[Install]
WantedBy=timers.target
タイマーサービスを有効化
sudo systemctl daemon-reload
sudo systemctl enable backup-redmine-db.timer
sudo systemctl start backup-redmine-db.timer
mkdir redmine-sql
cd redmine-sql
mkdir dbmkdir filespodman run --name redmine-sqlite -p3032:3000 -v$PWD/db:/usr/src/redmine/sqlite -v$PWD/files:/usr/src/redmine/files redmine:6.0.4-alpine
docker
docker run --name redmine-sqlite -p3030:3000 -v$PWD/db:/usr/src/redmine/sqlite -v$PWD/files:/usr/src/redmine/files redmine:4.2.10-alpine
docker update --restart=always redmine-sqliteexport TZ=Asia/Tokyopodman machine start