创建容器
示例:
docker run -it -d --name batch_test_v31_m8 -p 8889:8889 batch_test:v3.1_m7
常见参数
-d
:容器在后台运行。- -e, env, Set environment variables, 设置环境变量;环境变量是以 key-value 的形式设置。并且可以设置多个。
-it
,-it
is short for--interactive + --tty
when youdocker run
with this command.. it would take you straight inside of the container-itd
, so if you run docker container with-itd
it would run the-it
options and detach you from the container, so your container still running in the background even without any default app to run..docker run -d --name mysql_database -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db -p 3306:3306 rhscl/mysql-57-rhel7
-p, port, 绑定端口映射,格式:主机(宿主)端口:容器端口;
- -v,挂载卷,宿主卷:容器卷。
自动重启的容器
docker run --restart=always container
restart 的相关参数:
- no,默认为 no,挂掉后不重启
- always, docker 重启时自动重启. kill 掉 docker 后并不会重启。
- unless-stop, 含义和 always 差不多。
- on-failure, 容器发生错误退出时重启。on-failure Number, number 是容器尝试自动重启的最大次数。
关闭自动重启的容器
如果容器在创建时没有指定 —restart 参数,可以通过使用 update 来指定。还可以通过更改配置,关闭已经设置为自动重启的容器。docker update --restart=no/always/... container
容器
查看所有容器
// 这两个命令都可以
docker ps -a
docker container ls
结果:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
693c140a6e84 kougazhang/centos7-mongodb:4.0 "/usr/sbin/init" 16 hours ago Up 4 hours 0.0.0.0:29019->27017/tcp centos7-mongodb
image 这个地方是显示分支名:标签还是 imageId ,取决于容器创建时的方式。容器创建时,可以使用 imageId 或 imageName:tag 的方式。这个写脚本时遇到了,commit_image_changes.sh 的脚本,github 上有。
启动容器
docker start container
容器只运行一次
docker run —rm [选项] [镜像名称] [命令]
使用 —rm参数在我们使用完这个容器,关闭就会自动删除。适用于 各种语言的解释器,只想让解释器执行一次命令。
重启容器
无论容器是否在运行,使用 restart 命令都可以重启容器。
docker restart container
停止容器
docker stop [options] container
-t, 表示过一定时间停止容器。
docker kill container
退出容器
进入容器内部后,使用 exit 就会退出容器。退出容器,容器不会停止。只会在后台运行。
进入打开的容器
docker exec contain_id command
contain_id不必写完,写前几位就可以,这点是和使用 Git 时的 commit_id 是一致的;
command 就是创建容器时的 command, 执行
举例,打开 centos 容器
docker exec -it 0ee5 /bin/bash
查看容器
查看容器日志
docker logs container id
查看容器挂载目录
docker inspect containerName|grep -i mount
从容器生成/更新镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
如果 commit 命令中,[REPOSITORY[:TAG]]是存在的,如写为 xxx_peppsitory:latest
, 那么照样会生成新的镜像。老的镜像的 REPOSITORY 和 TAG 都显示为
如果该 [REPOSITORY[:TAG]] 不存在,则创建新的镜像。如果只写 REPOSITORY,没有写 tag,则默认会生成新的 TAG 为 latest 的镜像。
options:
- -a:提交镜像的作者;
- -c:使用 Dockfile 的指令来创建镜像;
- -m:提交镜像时的注释;
- -p:— pause,提交镜像时暂停容器;
举例:
docker commit -a "kougazhang" -m "centos7 installed python3.6.0" fc9935 python3:py3_6_0_centos
查看 command 命令
参考链接:https://stackoverflow.com/questions/32758793/how-to-show-the-run-command-of-a-docker-container/32774347
通过 docker 镜像创建的容器,它的 command 命令如何排查:
使用 runlike 工具:
pip install runlike
runlike $container_id
删除容器
docker container rm 0ee5/name
// 也可以简写
docker rm 0ee5
测试之后发现,不一定要写 contain_id,写name 也可以的. 但是 exec 命令就不可以使用 name。
删除所有停止的容器
当然正在运行的容器不会删除
docker rm `docker ps -a -q`
销毁正在运行的容器
docker rm -f 0ee5