侧边栏壁纸
  • 累计撰写 268 篇文章
  • 累计创建 140 个标签
  • 累计收到 16 条评论

目 录CONTENT

文章目录

Docker学习2——常用命令记录

Sherlock
2019-12-27 / 0 评论 / 0 点赞 / 1189 阅读 / 0 字
温馨提示:
本文最后更新于2023-10-09,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

主要记录下自己平时经常使用到的命令,会持续完善。

CentOS7 安装 Docker 摸我,更换国内源 摸我

Docker 部署

以部署 Jenkins 为例

1.拉取 docker 镜像

docker pull jenkins/jenkins:lts

2.启动容器(需要限制硬件的使用)

docker run -d --cpus=".5" -m 1g --memory-swap 0 --restart=always -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts

3.查看默认密码

cat /var/jenkins_home/secrets/initialAdminPassword

4.修改容器的时间和时区

docker cp /usr/share/zoneinfo/Asia/Shanghai {容器id}:/etc/localtime

5.容器内安装node

# 连接容器命令行
docker exec -u root -it {容器id} /bin/bash 
mkdir /opt/node
cd /opt/node
wget https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.xz
tar -xvf node-v10.16.3-linux-x64.tar.xz
rm -rf node-v10.16.3-linux-x64.tar.xz
cd node-v10.16.3-linux-x64/
ln -s /opt/node/node-v10.16.3-linux-x64/bin/node /usr/bin/node
ln -s /opt/node/node-v10.16.3-linux-x64/bin/npm /usr/bin/npm
ln -s /opt/node/node-v10.16.3-linux-x64/bin/npx /usr/bin/npx
node -v
exit

列出容器

docker ps
# 显示所有的容器,包括未运行的。
docker ps -a

列出本地镜像

docker images

删除本地一个或多少镜像

docker rmi xxx/ubuntu:v4
# 强制删除
docker rmi -f xxx/ubuntu:v4

推送镜像到 Docker Hub

用户名必须已在dockerhub注册

docker push sherlocky/springboot-gradle-docker-demo

连接容器命令行

# Docker 1.3.X+
docker exec -it {容器id} /bin/bash
## 还可指定 root 用户
docker exec -it {容器id} -u root /bin/bash

查看日志

docker logs -f {容器id}
## 追踪最近30分钟的日志
docker logs -f --since 30m {容器id}

修改docker 容器时区

docker cp /etc/localtime xxx:/etc/localtime

将现有容器打成镜像

docker commit -a "Sherlock" -m "Sherlock's xxx镜像,基于jenkins:lts官方镜像(20191227)" -p {容器id} Sherlock/jenkins:lts

save 导出镜像

docker save [options] images [images...]
-o>表示输出到文件,redis.tar 为目标文件,redis:latest是源镜像名(name:tag),也可以直接用镜像的id。

docker save -o redis.tar redis:latest
# 或
docker save > redis.tar redis:latest

load 导入镜像

docker load [options]
其中-i<表示从文件输入,会成功导入镜像及相关元数据,包括tag信息。

docker load -i redis.tar
# 或
docker load < redis.tar

export 和 import 导出导入 Docker 镜像

docker export [options] container
-o表示输出到文件,redis-container.tar为目标文件,redis-container是源容器名(name)。

docker export -o redis-container.tar redis-container

docker import [options] file|URL|- [REPOSITORY[:TAG]]

docker import redis-container.tar redis:test
# 或
cat redis-container.tar | docker import - redis:test

export、importsave、load区别

  • export命令导出的 tar 文件略小于save命令导出的。
  • export命令是从容器(container)中导出 tar 文件,而save命令则是从镜像(images)中导出。
  • export导出的文件再import回去时,无法保留镜像所有历史(即每一层 layer 信息,不熟悉的可以去看 Dockerfile),不能进行回滚操作。
  • save是依据镜像来的,所以导入时可以完整保留下每一层 layer 信息。

加入网络

docker network create network-zookeeper
docker network connect network-zookeeper zookeeper

推送到私有仓库

构建

docker build -t dev/xxx:1.0 .

登录私有仓库

docker login xxx.com

在项目中标记镜像:

docker tag SOURCE_IMAGE[:TAG] xxx.com/项目名称/IMAGE[:TAG]

推送镜像到当前项目:

docker push xxx.com/项目名称/IMAGE[:TAG]

Docker tini 进程管理器

https://cloud-atlas.readthedocs.io/zh_CN/latest/docker/init/docker_tini.html

如果直接在ENTRYPOINT中指定java程序运行,则java程序PID=1,当PID=1时jvm分析工具、Arthas等工具将无法使用,可以使用 tini 托管~

例如:

ENTRYPOINT ["tini"]
CMD java xxx
0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区