Docker 基本命令


一、Docker 简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

二、Docker思想

在这里插入图片描述
1.集装箱,将所有需要的内容放到不同的集装箱中,谁需要这些环境就直接拿到这个集装箱中就可以了
2.标准化,标准化的命令,提供了REST,衍生出很多图像化界面,如rancher Kitematic
3.隔离性,在LInux内核中 单独开辟一个空间,并不影响其他环境。
注册中心:码头,放的就是集装箱。
镜像:集装箱。
容器:运行起来的集装箱。

三、Docker基本操作

3.1 安装docker

https://docs.docker.com/engine/install/centos/
1.下载关于docker的依赖环境,安装所需的软件包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.设置下载docker的镜像源 选择国内的一些源地址:
阿里云
sudo yum-config-manager --add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
清华大学源
sudo yum-config-manager --add-repo
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
3.安装docker
查看是否已安装docker列表
yum list installed | grep docker
安装 Docker Engine-Community
yum makecache fast
yum install docker-ce docker-ce-cli containerd.io
4.启动,并设置开机自动启动,测试
启动 Docker
systemctl start docker
设置开机自动启动
systemctl enable docker
查看docker服务状态
systemctl status docker
通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community
$ sudo docker run hello-world

在这里插入图片描述
5 卸载 docker
删除安装包:
yum remove docker-ce
删除镜像、容器、配置文件等内容:
rm -rf /var/lib/docker

3.2 docker的中央仓库

1.docker的官方中央仓库:这个镜像是最全的,但是下载速度最慢。
https://hub.docker.com/
2.国内的镜像网站:网易数帆, daocloud, …
http://c.163.com/hub
http://hub.daocloud.io/ 不需要登录 (推荐使用)
在这里插入图片描述
在这里插入图片描述

2、docker engine :注意’'"引号

Docker 官方中国区
https://registry.docker-cn.com
网易
http://hub-mirror.c.163.com
中国科技大学
https://docker.mirrors.ustc.edu.cn
阿里云
https://cr.console.aliyun.com/#/imageList
https://pee6w651.mirror.aliyuncs.com

3.在公司内部会采用私服的方式拉取镜像。(添加配置)

需在 /etc/docker/daemon.json (不存在创建)

{
“registry-mirrors”: [“https://registry.docker-cn.com/”],
“insecure-registries”: [“ip:port”]
}
重启两个服务 systemctl deamon-reload systemctl restart docker

1.登录阿里开发者平台
https://promotion.aliyun.com/ntms/act/kubernetes.html#industry
2. 点击“镜像搜索”
自动跳转到控制台的镜像搜索
3. 注册/登录后 进入Docker 镜像仓库 (https://cr.console.aliyun.com/#/imageList),选中加速器 Tab
4.

修改配制文件 : vim usr/lib/systemd/system/docker.service
添加红色部分到 "mirror"后面
ExecStart=/usr/bin/dockerd --registry-mirror=your accelerate address
保存文件,重新加载配制:$ systemctl daemon-reload
重新启动服务:$ service docker restart

3.3 镜像的操作

1.拉取镜像到本地
docker pull 镜像名称:tag
docker pull tomcat (默认中央仓库拉取)
docker pull daocloud.io/library/tomcat:9.0.0.M20-alpine
在这里插入图片描述
阿里源配置 阿里云镜像加速解决unexpectedEOF错误
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://*.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2.查看全部本地镜像
docker images
3.删除本地镜像
docker rmi 镜像的标识
4.镜像的导入导出(不规范)
将本地镜像导出
docker save -o 导出的路径 镜像id
docker save -o ./tomcat.image 45ddbeff856b
加载本地的镜像
docker load -i 镜像文件
docker load -i tomcat.image
修改镜像名称
docker tag 镜像id 新镜像名称:版本

当需要把一台机器上的镜像迁移到另一台机器,需要保存镜像与加载镜像。

5.保存镜像到一个tar包
docker save httpd:latest -o httpd.latest
.tar
6.加载镜像(load)
docker load -i httpd.latest.tar

3.4 容器的操作

  1. 运行容器
    docker run 镜像标识
    docker run -d -p 宿主机端口:容器端口 --name 容器名称 镜像标识
    docker run -it -p 2222:22 -p 8000:8000 --name zwzx 6005357dd175
    #-d 代表后台运行容器
    #-p 映射Linux端口和容器端口
    #–name 容器名称
    2 查看正在运行的容器
    docker ps -qa
    #-a 全部的容器 包括没有运行的
    #-q 只查看容器的标识
    3.查看容器日志
    docker logs -f 容器id

4.进入到容器内部
docker exec -it 容器id bash
docker run -it centos:7 /bin/bash
进入正在运行的容器
docker exec -it 1e180e1c5ff3 /bin/bash
5.删除容器(删除容器前,需要停止容器)
停止指定容器
docker stop 容器id
停止全部容器
docker stop $(docker ps -qa)
docker rm 容器id
docker rm $(docker ps -qa)
退出容器:
exit
生成一个新的镜像
docker commit 4eb13e778da3 centos:7-ssh

从容器里面拷文件到宿主机
docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt
从宿主机拷文件到容器里面
docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js
docker cp 7:/usr/local/apache2/conf/ /data/httpd/ (本地地址加/是下一级目录)
启动mysql

docker run -p 3306:3306 -e MYSQL_USER=user1 -e MYSQL_PASSWORD=mypass -e MYSQL_DATABASE=db01 -e MYSQL_ROOT_PASSWORD=rootpass --name mysql -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

3.5 Docker 占用的磁盘空间

docker 占用的空间可以通过下面的命令查看:

docker system df

在这里插入图片描述

Images:所有镜像占用的空间,包括拉取下来的镜像,和本地构建的。
Containers:运行的容器占用的空间,表示每个容器的读写层的空间。
Local Volumes:容器挂载本地数据卷的空间。
Build Cache:镜像构建过程中产生的缓存空间

容器的磁盘占用 每次创建一个容器时,都会有一些文件和目录被创建,例如:

/var/lib/docker/containers/ID目录,如果容器使用了默认的日志模式,他的所有日志都会以JSON形式保存到此目录下。

/var/lib/docker/overlay2 目录下含有容器的读写层,如果容器使用自己的文件系统保存了数据,那么就会写到此目录下。

清理docker

#删除所有已经停止的容器
docker container prune
#删除所有容器(包括停止的、正在运行的),可以使用下面这2个命令:
$ docker rm -f $(docker ps -aq)$ docker container rm -f $(docker container ls -aq)
# 删除悬挂状态的镜像
$ docker image prune
#删除不再使用的数据卷
$ docker volume prune
#删除 build cache
$ docker builder prune
#一键清理  
#已停止的容器(container)
#未被任何容器所使用的卷(volume)
#未被任何容器所关联的网络(network)
#所有悬空镜像(image)
docker system prune

四、部分bug

问题:

Unable to find image ‘hello-world:latest’ locally docker: Error
response from daemon: Get https://registry-1.docker.io/v2/: http: server gave HTTP response to HTTPS client. See ‘docker run --help’.

解决:配置镜像源后 重启
sudo systemctl restart docker

问题:
Cannot find a valid baseurl for repo: base/7/x86_64
解决:docker cp CentOS-Base.repo cb846da4566c:/opt

问题:

Docker容器docker run -d后台启动不了的问题

解决
docker run -itd --name zwzx -p 8001:8000 centos:7-ssh

问题:

Failed to get D-Bus connection: Operation not permitted

解决
需要systemctl,需要特权.

docker run -itd --name zwzx -p 8001:8000 --privileged centos:7-ssh init

问题:
启动docker容器时报错:

iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0
–dport 5000 -j DNAT --to-destination 172.18.0.4:5000 ! -i br-ff45d935188b: iptables: No chain/target/match by that name. (exit
status 1)

解决:重启docker
systemctl restart docker


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值