Docker常用操作指令

Docker常用操作指令

1.镜像-Images

①拉取镜像

docker pull image-name:tag //如果不指定tag则默认拉取的是最新的镜像

②查看docker中已拉取的镜像

docker images  

③推送镜像到私有仓库

//无论是推送镜像到私有仓库还是拉取,都需要先进行登录,以阿里云镜像仓库为例,输入密码即可
docker login --username=[阿里云账户全名] registry.cn-shanghai.aliyuncs.com
//使用命令将需要推送的镜像进行重命名
docker tag [image-id] registry.cn-shanghai.aliyuncs.com/[个人镜像名称]:[镜像版本号]
//推送修改好名称的镜像到远程
docker push registry.cn-shanghai.aliyuncs.com/[个人镜像名称]:[镜像版本号]

④删除镜像

docker rmi images-id||image-name

2.容器-Container

①创建容器

docker create images-name

②运行容器

//-d  后台运行
//--link 链接到另一个容器
//-p  映射端口到主机
//-v  挂载主机目录到容器
//-e  设置环境变量
//--restart=always 开启自动启动
docker  run -d --name ${project-name} --link mysql:mysql -p 9090:9090 -v /home/service/guns:/guns -e "spring.profiles.active=dev"  --restart=always ${project-name}:$BUILD_NUMBER

③停止容器

docker stop container-name

④重启容器

docker restart container-name
docker start container-name

⑤移除容器

docker rm container-name

⑥查看容器或者镜像的详细信息

docker inspect container-name||image-name

⑦进入某个运行中的容器

docker exec -it container-name bash

3.日志

①查看启动打印的日志

docker logs -tail -f 100 container-name

4.文件复制

①从主机复制到容器

docker cp /home/file.txt container-name:/file.txt
//从容器复制到主机相反即可

 

 

 

5.进阶脚本

#!/bin/sh
BUILD_COMMAND="yarn install --registry https://registry.npm.taobao.org; yarn build;"
# 执行脚本时后面传入的第一个参数
CI_COMMIT_REF_SLUG="$1"
​
# 编译打包项目
docker run -v $(pwd)/:/app -w  /app node:10 /bin/sh -c "$BUILD_COMMAND" || exit 1
# 将项目打包到docker镜像,镜像名称带上CI_COMMIT_REF_SLUG
# 运行此命令需要项目根路径有Dockerfile文件,文件比较简单,这里就不列出了
docker build -t game-frontend:$CI_COMMIT_REF_SLUG .
# 判断是否有当前分支对应的容器在运行
if [ ! "$(docker ps -q -f name=$CI_COMMIT_REF_SLUG)" ]; 
then
        # 如果有容器但已退出
    if [ "$(docker ps -aq -f status=exited -f name=$CI_COMMIT_REF_SLUG)" ]; 
    then
        # 删除容器
        docker rm $CI_COMMIT_REF_SLUG
    fi
    # 利用刚刚构建的镜像启动一个名为CI_COMMIT_REF_SLUG的容器
    docker run --name $CI_COMMIT_REF_SLUG -P -d game-frontend:$CI_COMMIT_REF_SLUG
    # 获取容器端口号,输出出来,方便查看
    HOSTPORT=$(docker inspect --format='{{(index (index .NetworkSettings.Ports "3000/tcp") 0).HostPort}}' $CI_COMMIT_REF_SLUG)
    echo "端口号:$HOSTPORT"
else
    # 如果已有容器,则获取端口号
  HOSTPORT=$(docker inspect --format='{{(index (index .NetworkSettings.Ports "3000/tcp") 0).HostPort}}' $CI_COMMIT_REF_SLUG)
  echo "端口号:$HOSTPORT"
  # 停止容器,并删除
  docker stop $CI_COMMIT_REF_SLUG
  docker rm $CI_COMMIT_REF_SLUG
  # 根据之前端口号启动新的容器
  docker run --name $CI_COMMIT_REF_SLUG -p $HOSTPORT:3000 -d game-frontend:$CI_COMMIT_REF_SLUG
fi

 

 

lastest:问题集锦

①:问题描述:"Host '172.17.0.3' is not allowed to connect to this MySQL server"

原因是当前连接mysql的用户,比如root默认是只能在localhost使用,在其他主机连接该容器的mysql使用root则会报上面的错误。解决方案如下:

1).修改root的可使用地址为local和172.17.0.3

2).新建账号,各个ip地址都可用

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值