殆ど使用したことがないので、練習です。
また、centosが、rhelのアップストリームとなった為、 試しに alma linux を使用します。
目次
- 参考書籍や参考url
- install docker
- gpasswd -a ~ docker
- docker の daemon起動
- 極基本的なdockerコマンド
- Dockerfile の使用例
- 終了コンテナの表示や、一括削除
- docker composeの使用例
参考書籍や参考url
- https://www.amazon.co.jp/dp/B07GP1Q3VT
- https://docs.docker.com/engine/install/centos/
- https://blog.trippyboy.com/2021/docker/almalinux%E3%81%ABdocker%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B/
- https://www.kagoya.jp/howto/rentalserver/dockerimage/
install docker
$ sudo yum install yum-utils $ sudo yum-config-manager \ --add-repo https://download.docker.com/linux/centos/docker-ce.repo $ sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin ===================================================================== Package Architecture Version Repository ===================================================================== Installing: containerd.io x86_64 1.6.15-3.1.el9 docker-ce-stable docker-ce x86_64 3:20.10.23-3.el9 docker-ce-stable docker-ce-cli x86_64 1:20.10.23-3.el9 docker-ce-stable docker-compose-plugin x86_64 2.15.1-3.el9 docker-ce-stable <略> $ docker --version Docker version 20.10.23, build 7155243
- docler-ce:Dockerデーモン本体. ceは、Community Edition
- docker-ce-cli:Docker操作用コマンド群
- containerd.io:Dockerデーモンが動作するために必要なパッケージ
gpasswd -a ~ docker
以下を実行しない場合、「sudo docker ~」のようにsudoでの実行要
$ sudo gpasswd -a end0tknr docker Adding user end0tknr to group docker
docker の daemon起動
$ sudo systemctl start docker $ sudo systemctl enable docker $ sudo docker info Client: Context: default Debug Mode: false Plugins: app: Docker App (Docker Inc., v0.9.1-beta3) buildx: Docker Buildx (Docker Inc., v0.10.0-docker) compose: Docker Compose (Docker Inc., v2.15.1) scan: Docker Scan (Docker Inc., v0.23.0) <略> Docker Root Dir: /var/lib/docker
極基本的なdockerコマンド
## docker hubからgihyodocker/echoをdownloadし ## port;9000→8080のport forwardで起動 $ docker container run -t -p 9000:8080 gihyodocker/echo:latest ## curlコマンドで、アクセス $ curl http://localhost:9000 Hello Docker!! ## コンテナ停止 $ docker container stop $(docker container ls -q)
Dockerfile の使用例
vi Dockerfile
FROM golang:1.13 RUN mkdir /echo COPY main.go /echo CMD ["go", "run", "/echo/main.go"]
vi main.go
package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { log.Println("received request") fmt.Fprintf(w, "Hello Docker!!") }) log.Println("start server") server := &http.Server{Addr: ":8080"} if err := server.ListenAndServe(); err != nil { log.Println(err) } }
buildや実行、停止
##「example/echo:latest」という名前で「.」以下をbuild $ docker image build -t example/echo:latest . ## build結果の確認 $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE example/echo latest ccdda0ad9a49 7 seconds ago 803MB golang 1.13 d6f3656320fe 2 years ago 803MB ## buildされたcontainerをバックグランド(-d)実行 $ docker container run -d -p 9000:8080 example/echo:latest $ docker container ls CONTAINER ID IMAGE COMMAND CREATED c970166f457c example/echo:latest "go run /echo/main.go" 9 seconds ago ## curlコマンドでアクセスし、テスト $ curl http://localhost:9000 ## 停止 $ docker container stop $(docker container ls --filter "ancestor=example/echo" -q)
終了コンテナの表示や、一括削除
$ docker container ls -a $ docker system prune Are you sure you want to continue? [y/N] y
docker composeの使用例
最近では、docker compose の別途installは不要
$ docker compose version Docker Compose version v2.15.1
vi docker-compose.yml
以下で、先程のDockerfileと、main.goと同様の動作を行えます。
version: "3" services: echo: image: example/echo:latest ports: - 9000:8080
実行、テスト、停止
## 実行 $ docker compose up -d ## curlコマンドでアクセスし、テスト $ curl http://localhost:9000 ## 停止 $ docker compose down