docker常用命令
1、问题描述
docker使用越来越普遍,记录下,以便后续温故而知新;
2、问题说明
2.1 什么是docker?
docker的理解,看过很多,感觉这个是说的是最形象的。
2.2 docker安装
2.2.1 判断是否安装docker
docker version
2.2.2 在线安装docker
1、 查看是否安装的有老版本docker需要删除
sudo yum list installed | grep docker
2、docker在线安装
step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
# Step 5: 验证
docker version
3、docker操作及添加到自启动
1、启动docker服务
systemctl start docker
2、关闭docker服务
systemctl stop docker
3、重启docker
systemctl restart docker
4、 docker设置随服务启动而自启动
systemctl enable docker
查看是否增加自启动
systemctl is-enabled docker
5、查看docker 运行状态
systemctl status docker
-----如果是在运行中 输入命令后 会看到绿色的active
6、 查看docker 版本号信息
docker version
2.3 镜像操作
2.3.1 查看自己服务器中docker 镜像列表
docker images
通过docker pull拉取后,会在这里显示;
2.3.2 搜索镜像
docker search 镜像名
例如:docker search tomcat
2.3.3 拉取镜像
不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本
docker pull 镜像名
docker pull 镜像名:tag
例如:docker pull tomcat
2.3.4 docker镜像官方仓库
2.3.5 run镜像,构建容器
docker run tomcat
查看运行镜像/容器:
docker ps
--查看所有,包含关闭的
docker ps -a
删除镜像:
#删除一个
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
保存容器成镜像
docker save tomcat -o /mytomcat.ta
2.4 docker 容器
容器怎么来的 ?可以通过run 镜像 来构建 自己的容器实例,简单来说,运行镜像(docker run 镜像),就是构建容器实例(下面图参考其他朋友的);
每一个 Docker容器都是独立和安全的应用平台(我们可以理解为,每一个docker容器都相当于在我们的服务器上占用资源然后开辟了属于自己的一个空间(也可以理解为服务器))
查看端口号是否能用:
netstat -untlp
2.4.1 构建容器
docker run --name mytomcat1 -it -d -p 9090:8080 tomcat
启动第二个:
docker run --name mytomcat2 -it -d -p 9091:8080 tomcat
2.4.2 进入容器,非常重要
docker exec -it 容器名/容器ID /bin/bash
简写:docker exec -it 802 bash --802容器前三位
退出容器:exit
例如:docker exec -it mytomcat1 bash
2.4.3 查看docker容器日志
用于分析问题,非常重要,
docker logs --tail=要查看末尾多少行 容器名/容器ID
例如:docker logs mytomcat1
docker logs --tail=10 mytomcat1
有个点,阿里云下面的tomcat是最小化的,没有项目,浏览器访问会报404,更改下就好了,进入容器后:
mv webapps webapps2
mv webapps.dist webapps
2.4.4 容器管理
docker start/stop/restart/kill 容器名/容器ID
想给容器重新命名:
docker rename 容器ID/容器名 新容器名
示例:docker start mytomcat1
删除容器,慎用:
docker rm 容器名/容器ID
容器分析
docker inspect mt1
容器文件拷贝 —无论容器是否开启 都可以进行拷贝
#从容器内 拷出
docker cp 容器ID/名称: 容器内路径 容器外路径
#从外部 拷贝文件到容器内
docker cp 容器外路径 容器ID/名称: 容器内路径
也很重要,假如服务器被重启了,但是docker会自动启动,而容器不会,需要增加参数启动容器时,使用docker run命令时 添加参数 --restart=always
便表示,该容器随docker服务启动而自动启动;
针对已经存在容器,不想删容器,又想让这个容器设置开机自启动,那么我们修改其启动配置即可!
docker update --restart=always 容器Id 或者 容器名
2.4.5 数据挂载
简单来讲,就是将容器内的数据与外部宿主机文件绑定起来,类似一个双持久化,当容器删除时,宿主机文件数据目录仍在,下次启动容器只要将数据目录指向宿主机数据所在位置即可恢复!
命令:
-v 宿主机文件存储位置:容器内文件位置
-v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置
示例说明,项目中使用的:
docker run -d -u root -p 8080:8080 -v /opt/data/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
-d 以守护线程方式运行。不加该参数,关掉命令行,docker的jenkins就随之停止了。
-u jenkins的Linux启动用户名
-p 端口映射 docker命令所有映射,都是真系统的在前,docker下的在后 例如 -p 80:8080 就是把docker下的8080端口映射到真正系统上的80端口。对外访问使用80端口进行访问。
-v /opt/data/jenkins_home:/var/jenkins_home 映射 jenkins_home到本地/opt/data/jenkins_home目录。例如启动jenkins的初始密码,秘钥库等都从这里面找。
挂载这块还有几个点,需要再想想;
更多信息请关注公众号:「软件老王」,关注不迷路,软件老王和他的IT朋友们,分享一些他们的技术见解和生活故事。