Docker-入门


Docker 在 Linux 上的部署

参考 如何在 CentOS7 上安装和使用 Docker

Docker 使用

建议先看官方的新手指南 docker for beginners

0. 查找 help

任何一个应用,最好的了解方法就是查找 帮助文档,了解主要的参数设置

1. 查看 docker 的系统信息

docker info 

2. List command

docker 

会显示 docker 的 subcommand list

3. 查找 docker 仓库中的 images

docker search centos
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                            DEPRECATED; The official build of CentOS.       7664      [OK]
kasmweb/centos-7-desktop          CentOS 7 desktop for Kasm Workspaces            41
bitnami/centos-base-buildpack     Centos base compilation image                   0                    [OK]
couchbase/centos7-systemd         centos7-systemd images with additional debug…   8                    [OK]
continuumio/centos5_gcc5_base                                                     3
datadog/centos-i386                                                               0
dokken/centos-7                   CentOS 7 image for kitchen-dokken               5

OFFICIAL 列为 OK,代表是官方 build 和 support 的。

4. 拉取应用

当找到想要的应用后,使用

docker pull centos

下载到本地

5. 运行

docker run 

更加有用的用法是:

docker run -it container-name

-i interactive 交互式
-t pseudo-tty

进入到 container 的 shell 里面进行交互操作

目前领悟到的,是先在 交互式界面里 熟悉命令,官方说法 It makes sense to spend some time getting comfortable with it.
等熟悉了之后,直接使用 docker run 跑命令

--rm 推出后自动删除 container

❗ 注意:-it container-name 在最后

6. 查看运行的 containers

docker ps

更有用的用法

docker ps -a 

7. 删除 container

docker rm 
docker rm $(docker ps -a -q -f status=exited)
docker container prune

会删除掉所有 exited container

docker run 设置参数 --rm 会在 exit 后自动删除 container,非常好用

8. 删除 images

docker rmi image-name

Docker pull 修改默认位置

参考 docker pull如何指定目录

编辑 /etc/docker/daemon.json 添加设置:

{
  "data-root": "/new/docker/dir"
}

重启服务生效

systemctl stop docker
systemctl start docker

docker 进阶

将本地文件传入/传出 container

mount 传入 container

docker run --mount type=bind,source="$(pwd)"/R,target=/home/data --rm -it bmennis/majiq

!参考Having Docker access External files

copy files/folders between a container and the local filesystem

docker cp <container-id>:SRC_PATH DEST_PATH|-
docker cp SRC_PATH|- <container-id>:DEST_PATH

!参考Copying files from Docker container to host

container 的退出与重新进入

不考虑 –rm 的情况,每次运行 image 都会产生新的 container,这样既浪费资源,也使得我们在 container 内的操作重复,所以在长期使用一个 软件时,应该保持一个 container,进行反复操作。

container 有几种状态: running, exited,
我对 container 的退出与重新进入做了一些测试:

  • docker run mageck 后,直接 Ctrl+D 或者 exit 退出,会使 container 处于 exited 状态
    docker-run-mageck

container-exit

  • exited container 无法直接使用
    docker-exec-stopped-container

  • 使用 start 启动 exited container
    docker-start-stopped-container
    container-status-after-start

  • docker exec 重新进入 running container
    docker-exec-started-container

  • 同理,使用 stop 停止 container 运行,可进行删除操作
    docker-stop-container
    docker-rm-stopped-container

  • 当我们使用 Ctrl+P 后接 Ctrl+Q 的方法 detached the container,就会保持 container 处于 running 状态
    docker-quit-with-ctrl_P-ctrl_Q
    container-status-after-ctrl_P-ctrl-Q

参考How to Exit a Docker Container

  • 在 detach container 之后,可以用 docker attach container-name 重新回到 container

向内部程序传入参数

参考: 启动 docker 时如何向内部传入参数

docker run -it -d --name my_container -e PARAMS="parameters"  my_image 

文章作者: 梁绍波
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 梁绍波 !
评论
  目录