[Linux] - Docker 常用命令
# 运行docker # -it表示前端运行 docker run -it centos /bin/echo haha # 后端运行并映射80端口 docker run -dt -p 80:80 --name mycentos my/os # 端口映射,IP访问限制 docker run -dt -p 127.0.0.1:80:80 --name mycentos my/os # 不创建Container运行docker docker run --rm -it centos /bin/echo haha # 创建Container,起个名字 docker run -it --name testecho centos /bin/echo haha # 重命名image docker tag image_name new_image_name # 运行centos的终端 docker run -it centos /bin/bash # Container重命名 docker rename nginx nginx_1 #------------------------------------------------------------ # 退出 #------------------------------------------------------------ # 在docker的centos终端退出,此退出会停止Container exit # 不停止Container情况下退出方法 快捷键:ctrl + p, ctrl + q #------------------------------------------------------------ # 运行Container #------------------------------------------------------------ # 运行已经退出的docker centos终端 docker start 0a2b06b59448 # 运行并附加到container docker start -i ContainerID # 停止正在运行的docker centos终端 docker stop 0a2b06b59448 # 附加到docker终端Container,前提是此Container已经运行中 docker attach 3b6165b7504a # 列出所有的Container docker ps -a # 打印docker的运行终端显示 docker logs 81a4f43c74ed # 删除Container docker rm 3b6165b7504a # 删除所有Container docker rm $(docker ps -a) # 列出所有镜像 docker images # 搜索镜像 docker search centos # 下载镜像 docker pull centos # 提交镜像 docker commit mycentos my/os:latest #------------------------------------------------------------ # 镜像导入导出及运行 #------------------------------------------------------------ # 导入容器为镜像文件 docker export 3b6165b7504a > centos.tar # 导入镜像 cat centos.tar | docker import - test/centos:v1.0 # 运行导入的镜像 docker run -it test/centos:v1.0 /bin/bash # 删除镜像 docker rmi test/centos:v1.0 # 查看docker的信息,包括安装路径、CPU、内存等 docker info # Container执行命令,进入容器终端 docker exec -it ContainerID bash # 进入容器终端 nsenter --mount --uts --ipc --net --pid --target $(docker inspect --format "{{.State.Pid}}" "4cd5af004a52") # 查看Container的端口映射 docker port ContainerID #------------------------------------------------------------ # 动态设置运行时的环境变量 # 使用参数--env # 查看Container的环境变量方法,可以进入Container的bash中运行命令:env #------------------------------------------------------------ # 查看Container的环境变量 docker exec -it nginx env # 查看Container的Host文件 docker exec -it nginx cat /etc/hosts # 设置Container的环境变量 docker run --rm -it --name test --env MYHOME=/home --env TEST=/home --env PATH=$PATH:/home centos bash # 也可以使用inspect查看Container的环境变量 docker inspect nginx #------------------------------------------------------------ # 端口映射,IP访问限制 #------------------------------------------------------------ docker run -dt -p 127.0.0.1:90:80 --name jetty img_jetty docker run -dt -p 127.0.0.1:91:80 --name jetty1 img_jetty docker run -dt -p 80:80 --name nginx --link jetty:java --link jetty1:java1 img_nginx #------------------------------------------------------------ # 镜像保存与重加载 #------------------------------------------------------------ # 保存镜像 docker save img_java > img_java.tar # 重新加载镜像 docker load < img_java.tar # 查询镜像历史 docker history img_java # 查看镜像信息Json docker inspect img_java #------------------------------------------------------------ # 文件复制 #------------------------------------------------------------ # 从Container复制文件autorun.sh到Host主机的/home目录下 # 也可以是目录复制 docker cp test:/etc/init.d/autorun.sh /home # 从Host主机复制文件或文件夹到Container主机 # 使用scp命令,如果没有安装scp,使用yum install openssh-clients # 首先需要使用docker exec进入到Container的终端 scp -rp root@192.168.0.35:/home/jetty8/* /home/
#------------------------------------------------------------
# docker容器自动启动
#------------------------------------------------------------
docker run --restart=always redis
#------------------------------------------------------------
# 挂载数据卷
# 参数privileged=true:意思给容器添加特权,比如对挂载卷的读写
# 挂载多个数据卷,可以使用多次-v
#------------------------------------------------------------
# 创建数据卷容器,并挂载目录
docker run -it --privileged=true -v /home/jetty8:/home/jetty8 --name jetty centos bash
# 使用数据卷容器创建新的数据卷容器
docker run -it --privileged=true --volumes-from jetty --name os centos bash
#------------------------------------------------------------
# 使用Dockerfile创建镜像
#------------------------------------------------------------
# 注意后面的一点不可少:.
docker build -f dockerfile -t my/centos .