Docker 学习总结

命令总结:

检查当前 CentOS 系统内核版本
 uname -r 

检查当前 CentOS 系统版本
cat /etc/redhat-release

Linux安装
CentOS安装命令
sudo yum update
sudo yum install docker

设置Docker开启启动
systemctl  enable  docker

Ubuntu
sudo apt-get update
sudo apt-get docker.io

查看docker版本
docker  -v

Docker镜像检索
docker search 镜像名

例如:docker search redis

镜像下载

docker pull 镜像名
docker pull  redis
docker pull ubuntu:16.04   #带版本号
docker pull  仓库地址/java:7  #指定仓库下载镜像

镜像列表
docker images
其中PEPOSITORY是镜像名:TAG是软件版本,latest为最新版本;IMAGE_ID是当前镜像的唯一标识;
CREATED是当前镜像创建时间;VIRTUAL SIZE是当前镜像的大小。

镜像删除
docker rmi image-id
删除所有镜像

docker  rmi $(docker images -q)
docker  rmi -f $(docker images)  #-f 强制删除

容器列表
运行:          docker ps 
运行和停止:    docker ps -a

容器启动
docker run --name container-name -d image-name
--name参数是为容器取的名称,-d表示detached,意味着执行这句命令后控制台将不会被阻碍,可继续输入命令操作;
最后的image-name是要使用哪个镜像来运行容器
例如:  docker run --name test-redis -d redis
        docker run -p 8080:80 nginx  #“-p 8080:80”告诉Docker将本地主机端口8080映射到Docker容器的端口80。您应该能够从http://localhost:8080访问nginx服务器

命令说明:

  • -p 3306:3306:将容器的3306端口映射到主机的3306端口
  • -v /opt/docker_v/mysql/conf:/etc/mysql/conf.d:将主机/opt/docker_v/mysql/conf目录挂载到容器的/etc/mysql/conf.d
  • -e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码
  • -d: 后台运行容器,并返回容器ID
  • imageID: mysql镜像ID

启动容器
docker start container-name/container-id
例如: docker start test-redis

停止容器
docker stop container-name/container-id
例如:docker stop test-redis

端口映射
映射容器6379端口到本机的6378端口
docker run -d -p 6378:6379 --name port-redis redis

删除容器
单个: docker rm container-id
所有: docker rm $(docker ps -a -q) 
            docker rm -f $(docker ps -a -q)  #-f用来删除正在运行的容器
     
容器日志
docker logs  container-name /container-id
例如: docker logs port-redis

登陆容器
docker  exec -it  container-id/container-name bash
docker  exec -it  container-id/container-name  /bin/bash

docker镜像
都放在docker官网上
docker hub:https://hub.docker.com/


将linux系统中的文件复制到docker容器中
docker cp /usr/local/dockerjdk8/jdk-8u65-linux-x64.zip bb880907496b:/usr/local/java8/


查看镜像的创建历史
docker history nginx
docker image history nginx

docker pull 镜像名
docker pull  redis
docker pull ubuntu:16.04   #带版本号
docker pull  仓库地址/java:7  #指定仓库下载镜像


docker  rmi $(docker images -q)
docker  rmi -f $(docker images)


保存镜像
docker save  busybox > busybox.tar
docker save  --output.tar  busybox
加载镜像    #从busybox.tar文件中加载镜像
docker load   <busybox.tar
docker load  --input  busybox.tar

导出容器
#将容器导出成latest.tar文件
docker  export red_panda > latest.tar
docker  export  --output="latest.tar" red_panda

导入容器
#从nginx2.tar  文件导入,并创建nginx镜像
# -c  将dockerfile指令应用到创建的镜像
# -m  为导入的镜像设置提交信息
docker import nginx2.tar nginx

构建镜像 
通过Dockerfile构建镜像
docker build [options] path |url |-
docker build -t itmuch/some-repo:some-tag .  #-t 设置标签,格式name:tag,其中tag可选

强制停止容器
docker  kill contained-id

重启容器
docker restart   -t   contained-id  # -t 等待时间


后台启动一个容器后,如果想进入到这个容器,可以使用attach命令:

docker attach container_name/container_id

删除容器的命令

docker rm container_name/container_id

查看当前系统Docker信息

docker info

使用帮助选项检查Docker安装上的最新可用命令:
docker --help
要使用特定命令的选项,可以使用该命令的help选项。例如,要使用docker run命令选项,可以使用以下命令:
docker run --help

卸载老版本Docker:
sudo  yum remove docker \  docker-common  \  docker-selinux \  docker-engine  
注意:此操作只是卸载软件,依然会保留旧的数据(/var/lib/docker)


目前,有13个管理命令和41个通用命令。下面是我们的docker命令:
docker attach-将本地输入/输出/错误流附加到正在运行的容器。
docker commit-从容器的当前更改状态创建一个新镜像。
docker exec-在正在运行的容器中运行命令。
docker history-显示镜像的历史记录。
docker info-显示系统信息,包括镜像和容器数。
docker inspect-查找有关Docker容器和镜像的系统级信息。
docker login-登录到本地注册表或Docker Hub。
docker pull-从本地注册表或Docker Hub中提取镜像或存储库。
docker ps-列出容器的各种属性。
docker restart-停止并启动容器。
docker rm-移除容器。
docker rmi-删除镜像。
docker run-在一个独立的容器中运行一个命令。
docker search-在Docker Hub中搜索镜像。
docker start-启动已经停止的容器。
docker stop-停止运行容器。
docker version -提供Docker版本信息。
docker info:
它将向您显示各种重要信息,如服务器版本、存储驱动程序、内核版本、操作系统、总内存等等。当您试图为当前的Docker安装增加新的资源或试图解决系统级资源分配问题时,这些信息可能很有用。这也是一种快速检查正在运行、暂停和停止的容器数量以及下载到系统的镜像数量的方法

您不需要注册Docker Hub即可拉取镜像。但是,如果要将图像推送到Docker Hub,则需要注册,然后使用Docker login命令登录:$ docker login --username = yourhubusername --email = youremail@company.com


Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

解决办法
$ systemctl daemon-reload
$ sudo service docker restart

问题一:

Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

解决方案:

修改docker镜像源:
docker默认的源为国外官方源,下载速度较慢,可改为国内,加速
方案一
修改或新增 /etc/docker/daemon.json
# vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
systemctl restart docker.service

问题二:

redis 由于目标计算机积极拒绝,无法连接

解决方案:

https://blog.csdn.net/weixin_42456466/article/details/87270959

问题三:

navicat: Client does not support authentication protocol requested by server;

解决方案:

docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
docker 安装 mysql 8 版本
# docker 中下载 mysql
docker pull mysql
#启动
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Lzslov123! -d mysql
#进入容器
docker exec -it mysql bash
#登录mysql
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Lzslov123!';
#添加远程登录用户
CREATE USER 'liaozesong'@'%' IDENTIFIED WITH mysql_native_password BY 'Lzslov123!';
GRANT ALL PRIVILEGES ON *.* TO 'liaozesong'@'%';

 问题四:

http://xx:8080/ HTTP Status 404 – 未找到

 解决方案:

docker  exec -it  342d814e3dc5 /bin/bash
rm  webapps
mv webapps.dist  ./webapps

问题5:bash: /usr/local/java8/jdk1.8.0_65/bin/java: Permission denied

1)进入存放jdk文件的文件夹路径
我这里是 usr/local/java8/
2)输入命令 chmod 777 chmod  777 jdk1.8.0_65/bin/java修改权限
3)再次输入 java -version 成功

问题6:Centos出现-bash: unzip: command not found, CentOS解决-bash: vim: command not found,

yum install -y unzip zip


输入rpm -qa|grep vim 命令, 如果 vim 已经正确安裝,会返回下面的三行代码:
root@server1 [~]# rpm -qa|grep vim
vim-enhanced-7.0.109-7.el5
vim-minimal-7.0.109-7.el5
vim-common-7.0.109-7.el5
 如果少了其中的某一条,比如 vim-enhanced 的,就用命令 yum -y install vim-enhanced 来安裝:
yum -y install vim-enhanced
如果上面的三条一条都沒有返回, 可以直接用 yum -y install vim* 命令

sudo: command not found。。。
apt-get update
apt-get install sudo

问题7:Error response from daemon: Get https://index.docker.io/v1/search?q=rabbitmq&n=25: dial tcp 3.220.75.233:443: i/o timeout

问题8:   Error response from daemon: conflict: unable to delete d2d45254c99b (must be forced) - image is referenced in multiple repositories

守护程序的错误响应:冲突:无法删除d2d45254c99b
这里存在的问题是因为存在依赖,我们根据具体的tag来删除容器就可以了
解决方法:docker  rmi  rabbitmq:3.7-management

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值