一、安装Docker:

安装包下载地址:

Index of linux/static/stable/x86_64/

1.1 在Centos7进行安装前,可以使用以下命令查看CentOS版本。

cat /etc/redhat-release

1.2 在 CentOS 7安装docker要求系统为64位、系统内核版本为 3.10 以上。

uname -r

2.1 查看是否已安装docker列表

yum list installed | grep docker

2.2 安装docker

yum -y install docker

-y表示不询问安装,直到安装成功,安装完后再次查看安装列表

2.3 启动docker

systemctl start docker

2.4 查看docker服务状态

systemctl status docker

出现以上,说明docker安装成功!

2.5 查看docker版本

docker version

docker --version

2.6 设置docker开机关机和自启动

开机自启动:

systemctl enable docker

2.7 配置docker镜像,源:

vi /etc/docker/daemon.json
{
  "registry-mirrors": ["https://ckib1ecu.mirror.aliyuncs.com"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker

二、使用Docker:

查看 docker的服务状态:

systemctl status docker

如果没有启动的话,要先启动 docker 服务:

systemctl start docker

1.从远程仓库拉取一个纯净的 centos 系统镜像

查询 centos 相关的镜像
docker search centos

下载镜像到本地
docker pull 镜像名

查看本地镜像
docker images

查看容器
docker ps

2.创建并进入容器

创建容器

格式:docker  run  -dit  --name=容器名  镜像 id  /bin/bas

查看所有容器

docker ps -a

 进入容器

 格式:docker  exec  -it  容器名  /bin/bash

3.操作容器

。。。。。。

4.安装好环境之后,退出容器

 5.将容器制作成镜像

格式:docker  commit  -m  '镜像描述'  -a  '制作者'  容器名  镜像名

 6.将制作好的镜像打成 tar 包

 格式:docker  save  -o  tar包的名字  镜像名

7.将打包好的 tar 包传给别人

准备中!

新建一个本地目录:

mkdir pot

查看被发送主机的IP地址:

ifconfig ensXXX

准备好以后!

scp /opt/start.tar root@192.168.1.22:/pot/

格式:scp  tar包所在路径  用户名@IP地址:要上传的路径

查看被上传主机中目录的文件:

 已经传输成功!

8.别人接收到 tar 包之后,怎么使用 tar 包

准备中!

先删除原来的镜像:

docker rmi image-id(这里是id)

查看现有的镜像:

准备好以后!

格式:docker  load  <  tar 包所在路径

 查看现有的镜像:

镜像已导入! 

9.使用镜像

1.查看本地镜像和容器

2.创建并运行容器

格式:docker  run  -dit  --name=容器名  镜像 id  /bin/bas

3.查看容器

注意:出现上上图中的警告,需要检查网络。

报错:WARNING: IPv4 forwarding is disabled. Networking will not work.

输入:sysctl net.piv4.ip_forward

显示:net.ipv4.ip_forward = 0

 vim /etc/sysctl.conf

加入,代码:net.ipv4.ip_forward=1

 重启网络:

systemctl restart network

 4.进入容器

docker exec -it star /bin/bash

 测试,网络通畅!

10.容器互联

Docker网络命令:

直连命令:

docker run -d -P --name tomcattomcatlink --link tomcat0 tomcat1

docker network ls

docker network inspect eceb5fc42b81( NETWORK ID)

docker inspect 6d2352ff3a24(CONTAINER ID)

docker network ls

解释:

bridge:桥接docker(默认,自己也使用bridge 模式)
none:不配置网络
host:和宿主机共享网络
container:容器网络连通!(用的少!局限很大)

默认建立网络:
docker run -d -P --name tomcat01 --net bridge tomcat

建立一个新的网络:
docker network create --driver bridge --subnet 192.18.0.0/16 --gateway 192.168.0.1 mynet

另一种方式建立一个新的网络:
docker network create setnet --subnet 172.38.0.0/16

查看网络:
docker network ls

解释:
--driver bidge
--subnet 192.168.0.0/16 (192.168.0.2-192.168.255.255)
--gateway 192.168.0.1

默认建立网络:
docker run -d -P --name tomcat01 --net bridge tomcat
建立一个新的网络:
docker network create --driver bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 my

解释:
--driver bidge
--subnet 172.18.0.0/16 (192.18.0.2-172.18.255.255)
--gateway 192.168.0.1

查看这个网络配置:
docker network inspect my

创建容器并加入网络:

docker run -itd -p 18080:8080 --name ping10tomcat 69db17c4b420 /bin/bash
docker run -itd -p 180:80 --name ping10nginx 4333e660bcdf /bin/bash

ping能否通:

docker exec -it pingtomcatnet ping pingnginxnet

将容器加入这个网络:

docker network connect mydriver tomcat3
docker network connect mydriver nginx3
 

--

新建网络:

docker network create -d bridge test-net

连接容器:

docker run -itd --name test1 --network test-net ubuntu /bin/bash
docker run -itd --name test2 --network test-net ubuntu /bin/bash

在 /etc/docker/daemon.json 文件中配置 DNS:

{
  "dns" : [
    "114.114.114.114",
    "8.8.8.8"
  ]
}

注意:配置完,需要重启 docker 才能生效!

查看容器的 DNS:

docker run -it --rm  ubuntu  cat etc/resolv.conf

(略)手动配置容器配置DNS

备注:


启动:
systemctl start docker
停止:
systemctl stop docker
重启:
systemctl restart docker


停止所有docker容器
sudo docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
启动所有docker容器
sudo docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)


删除容器,例:

docker stop (CONTAINER ID)

docker rm (NAMES)

不关闭强制删除容器:

docker rm -f  (NAMES)

删除镜像:

docker rmi (image id)

修改容器名称,例:

docker rename start centos-test (原名称和修改名称)

打开容器,例:

docker start 48dd1e594672 (CONTAINER ID)

进入容器,例:

docker attach 44fc0f0582d9 (CONTAINER ID)

docker exec -it start(容器名称) /bin/bash

查看容器的进程

docker top 44fc0f0582d9 (CONTAINER ID) 

查看容器的元数据

docker inspect e9352cd0faf5 (CONTAINER ID) 

提交镜像

docker commit -m='run' -a='jacktree365' 920a879e7c94 start:start

备注:-m: 提交的描述信息\-a: 指定镜像作者\920a879e7c94 :容器 ID\start:start: 指定要创建的目标镜像名

修改镜像名称,例:

docker tag 63af60731612 ubuntu.io/test:latest(原IMAGEID和新REPOSITORY名称:新TAG名称)

要删除所有镜像

docker rmi $(docker images -q)

想要删除所有容器

docker rm $(docker ps -a -q)

设置容器重启后境像会自动开启:

方式一:Docker 命令修改

docker container update --restart=always start(容器名称)

方式二:直接改配置文件

首先停止容器,不然无法修改配置文件
配置文件路径为:/var/lib/docker/containers/容器ID
在该目录下找到一个文件 hostconfig.json ,找到该文件中关键字 RestartPolicy
修改前配置:"RestartPolicy":{"Name":"no","MaximumRetryCount":0}
修改后配置:"RestartPolicy":{"Name":"always","MaximumRetryCount":0}
最后启动容器。

(完)

三、关于Docker的备注:

操作docker:

==镜像类==
docker image search  #查看镜像库
             pull    #拉取镜像
             ls      #查看本地镜像仓库
             inspect #查看镜像详细信息
             rm      #删除镜像
             save    #导出镜像
             load    #导入镜像
==容器类==
docker container run      #守护式开启容器
                 run -d   #让容器守护进程的方式在后台启动
                 run -it  #-it i 以交互方式,t 开启一个新的终端 tty
                 inspect  #查看容器详细信息
                 start    #启动容器
                 stop     #关闭容器
                 restart  #重启容器
                 kill     #关闭容器,退出容器
                 rm       #删除容器
                 ls       #查看容器
                 ls -a    #查看所有容器
                 ls -a -q #查看所有容器的ID
                 attach   #进入守护式容器
                 exec     #交互式启动,子进程方式登录容器
                 top      #显示容器内进程运行情况
                 logs     #容器日志
                 rm -f `docker container ls -a -q`  #清除所有容器

一、docker images 命令

REPOSITORY :表示镜像的仓库源。

TAG :镜像的标签,通俗的讲就是该镜像的版本。latest代表最新版本。

IMAGE ID:镜像ID。

CREATED:镜像创建时间。

SIZE:镜像大小。

二、docker ps 命令

CONTAINER ID: 容器 ID。

IMAGE: 使用的镜像。

COMMAND: 启动容器时运行的命令。

CREATED: 容器的创建时间。

STATUS: 容器状态。

状态有7种:

  • created(已创建)

  • restarting(重启中)

  • running 或 Up(运行中)

  • removing(迁移中)

  • paused(暂停)

  • exited(停止)

  • dead(死亡)

PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

NAMES: 自动分配的容器名称。

3.Docker build 命令

docker build 命令用于使用 Dockerfile 创建镜像。

语法:
docker build [OPTIONS] PATH | URL | -

OPTIONS说明:

--build-arg=[] :设置镜像创建时的变量;

--cpu-shares :设置 cpu 使用权重;

--cpu-period :限制 CPU CFS周期;

--cpu-quota :限制 CPU CFS配额;

--cpuset-cpus :指定使用的CPU id;

--cpuset-mems :指定使用的内存 id;

--disable-content-trust :忽略校验,默认开启;

-f :指定要使用的Dockerfile路径;

--force-rm :设置镜像过程中删除中间容器;

--isolation :使用容器隔离技术;

--label=[] :设置镜像使用的元数据;

-m :设置内存最大值;

--memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;

--no-cache :创建镜像的过程不使用缓存;

--pull :尝试去更新镜像的新版本;

--quiet, -q :安静模式,成功后只输出镜像 ID;

--rm :设置镜像成功后删除中间容器;

--shm-size :设置/dev/shm的大小,默认值是64M;

--ulimit :Ulimit配置。

--squash :将 Dockerfile 中所有的操作压缩为一层。

--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

--network: 默认 default。在构建期间设置RUN指令的网络模式

4.Dockerfile命令

* **FROM** 指定基础镜像文件
* **MAINTAINER**  维护者的信息
* **RUN**   执行命令
* **EXPOSE**  对外暴露的端口
* **ADD**  复制文件到容器中,若是压缩文件会自动解压
* **COPY**  复制文件到容器中,若是压缩文件不会自动解压
* **WORKDIR**  改变工作目录
* **ENTRYPOINT**  运行容器时执行的命令(default 自启动)

dockerfile 的命令摘要:

  • FROM- 镜像从那里来
  • MAINTAINER- 镜像维护者信息
  • RUN- 构建镜像执行的命令,每一次RUN都会构建一层
  • CMD- 容器启动的命令,如果有多个则以最后一个为准,也可以为ENTRYPOINT提供参数
  • VOLUME- 定义数据卷,如果没有定义则使用默认
  • USER- 指定后续执行的用户组和用户
  • WORKDIR- 切换当前执行的工作目录
  • HEALTHCHECH- 健康检测指令
  • ARG- 变量属性值,但不在容器内部起作用
  • EXPOSE- 暴露端口
  • ENV- 变量属性值,容器内部也会起作用
  • ADD- 添加文件,如果是压缩文件也解压
  • COPY- 添加文件,以复制的形式
  • ENTRYPOINT- 容器进入时执行的命令

Dockerfile指令详细说明版:

  • FROM

构建镜像基于哪个镜像

  • MAINTAINER

镜像维护者姓名或邮箱地址

  • RUN

构建镜像时运行的指令

  • CMD

运行容器时执行的shell环境

  • VOLUME

指定容器挂载点到宿主机自动生成的目录或其他容器

  • USER

为RUN、CMD、和 ENTRYPOINT 执行命令指定运行用户

  • WORKDIR

为 RUN、CMD、ENTRYPOINT、COPY 和 ADD 设置工作目录,就是切换目录

  • HEALTHCHECH

健康检查

  • ARG

构建时指定的一些参数

  • EXPOSE

声明容器的服务端口(仅仅是声明)

  • ENV

设置容器环境变量

  • ADD

拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压

  • COPY

拷贝文件或目录到容器中,跟ADD类似,但不具备自动下载或解压的功能

  • ENTRYPOINT

运行容器时执行的shell命令

5.Docker的导入与导出:

import      Import the contents from a tarball to create a filesystem image  
load        Load an image from a tar archive or STDIN

export      Export a container's filesystem as a tar archive
save        Save one or more images to a tar archive (streamed to STDOUT by default)

备注:

import 与 export 对应,一个导入一个导出;load 与 save 对应,一个导入一个导出。

详细讲解:

docker save 用来将一个或多个image打包保存

如:将本地镜像库中的image1和image2打包到images.tar中
docker save -o images.tag  image1:v1 image2:v1
docker save 也可以打包container,保存的是容器背后的image.
docker load用于将打包的tar中包含的镜像load到本地镜像库,但不能重命名其中的镜像名。
docker load -i images.tar

例:

docker save imageID -o saveImageName.tar
或者
docker save imageID > saveImageName.tar
docker load -i saveImageName.tar
或者
docker load < saveImageName.tar

docker export 打包container文件系统

docker export -o thecontainer.tar container_name
使用 docker import 载入,可以为新镜像指定name和tag
docker import thecontainer.tar newimagename:tag

例:

docker export CONTAINER ID|NAME -o container_name.tar
docker import container_name.tar
或者
cat container_name.tar | docker import -repository:tag

总结:

docker save保存的是镜像(image),docker export保存的是容器(container);
docker load用来载入镜像包,必须是一个分层文件系统,必须是是save的包;
docker import用来载入容器包,但两者都会恢复为镜像;
docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。
docker export的包会比save的包要小,原因是save的是一个分层的文件系统,export导出的只是一个linux系统的文件目录

docker 添加端口:

docker指令:docker run -p ip:hostPort:containerPort redis

使用-p参数会分配宿主机的端口映射到虚拟机。
IP表示主机的IP地址。
hostPort表示宿主机的端口。
containerPort表示虚拟机的端口。

支持的格式有三种:

ip:hostPort:containerPort:映射指定地址的指定端口到虚拟机的指定端口(不常用)
如:127.0.0.1:3306:3306,映射本机的3306端口到虚拟机的3306端口。
ip::containerPort:映射指定地址的任意端口到虚拟机的指定端口。(不常用)
如:127.0.0.1::3306,映射本机的3306端口到虚拟机的3306端口。
hostPort:containerPort:映射本机的指定端口到虚拟机的指定端口。(常用)
如:3306:3306,映射本机的3306端口到虚拟机的3306端口。

docker 修改容器端口映射

docker run -d -p 9999:8080 -i -name tomcat8 tomcat:8    主机9999端口映射到8080端口

方法1:

① 删除原有容器docker rm -f 容器名/ID

② 创建新容器:docker run -d -p 8080:8080 -i --name tomcat8 tomcat:8 

缺点:相关配置被删除

方法2:修改配置文件

① 暂停docker服务 systemctl stop docker

② 进入docker配置文件目录下 cd /var/lib/docker/containers/    ls

③ 进入容器ID (ID为文件夹)

④ 修改hostconfig.json文件 vim hostconfig.json

⑤ 修改其中端口值9999为8080 保存退出:wq

⑥ 重启docker服务 systemctl start docker

缺点:暂停docker服务会影响其他容器

方法3:使用docker commit命令创建新镜像

① 停止容器服务 docker stop tomcat8

② 构建新镜像  docker commit tomcat8 tomcat8_new

③ 使用新镜像重新创建容器  docker run -d -p 8888:8080 -i --name tomcat88 tomcat8_new

④ 删除原有容器 docker rm tomcat8

⑤ 修改容器名称 docker rename tomcat88 tomcat8

优点:什么都不会丢,什么都不影响  缺点:管理镜像成本提升

docker 修改主机映射目录

docker run -d -p 9999:8080 -i -name tomcat8 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:8 

同端口修改方法,方法2中修改的为config.v2.json 文件

docker命令不需要敲sudo的方法:

方法一:

1.创建一个docker组
$ sudo groupadd docker
 

2.添加当前用户到docker组
$ sudo usermod -aG docker $USER
 

3.登出,重新登录shell


4.验证docker命令是否可以运行
$ docker run hello-world

方法二:

sudo groupadd docker     #添加docker用户组
sudo gpasswd -a $USER docker     #将登陆用户加入到docker用户组中
newgrp docker     #更新用户组
docker ps    #测试docker命令是否可以使用sudo正常使用

dcoker卸载的方法:

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine \
           docker-ce

docker镜像的设置:

(配置阿里云docker镜像地址)

安装docker前需要安装的依赖包:
yum install -y yum-utils device-mapper-persistent-data lvm2

使用阿里国内源安装docker
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum makecache fast
yum install docker-ce -y
 

docker阿里云镜像加速器:

(针对Docker客户端版本大于 1.10.0 的用户)

通过修改daemon配置文件/etc/docker/daemon.json来使用加速器:

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

ifconfig命令的安装:

第一步:

cd /etc/sysconfig/network-scripts/

进入

vi ifcfg-enoXXX(默尾替换)

修改文件中:

ONBOOT=yes

第二步:

service network restart

第三步:

yum provides ifconfig

第四步:

yum install net-tools

vim命令的安装:

使用rpm命名安装即可,如下:
yum -y install vim-minimal
yum -y vim-common
yum -y install vim-enhanced
缺少那个就安装那个,如果都没有,则使用如下命名一起安装:
yum -y install vim*

Linux同步时间:

1、安装ntp
yum install -y ntpdate
2、与一个已知的时间服务器同步
ntpdate time.nist.gov

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐