docker

dockor

参考网址

https://www.runoob.com/docker/docker-install-ubuntu.html -菜鸟教程

https://www.cnblogs.com/yufeng218/p/8370670.html -centOS7 安装docker

https://www.hangge.com/blog/cache/detail_2411.html -本地镜像的导入导出

https://www.cnblogs.com/wholj/p/10551999.html -docker端口映射

 

dockor入门案例

Hello world

runoob@runoob:~$ docker run ubuntu:15.10 /bin/echo "Hello world"
Hello world

docker: Docker 的二进制执行文件。

run: 与前面的 docker 组合来运行一个容器。

ubuntu:15.10 指定要运行的镜像

Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。

/bin/echo "Hello world": 在启动的容器里执行的命令

 

运行交互式的容器

runoob@runoob:~$ docker run -i -t ubuntu:15.10 /bin/bash
root@0123ce188bd8:/#

-t: 在新容器内指定一个伪终端或终端

-i: 允许你对容器内的标准输入 (STDIN) 进行交互

注意第二行 root@0123ce188bd8:/#,此时我们已进入一个 ubuntu15.10 系统的容器

查看当前系统的版本信息

root@0123ce188bd8:/#  cat /proc/version
Linux version 4.4.0-151-generic (buildd@lgw01-amd64-043) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) ) #178-Ubuntu SMP Tue Jun 11 08:30:22 UTC 2019

当前目录下的文件列表

root@0123ce188bd8:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@0123ce188bd8:/# 

退出容器

root@0123ce188bd8:/#  exit
exit
root@runoob:~# 

可以通过运行 exit 命令或者使用 CTRL+D 来退出容器。

 

启动停止容器(后台模式)

运行容器

runoob@runoob:~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

在输出中,我们没有看到期望的 "hello world",而是一串长字符

2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

这个长字符串叫做容器 ID,对每个容器来说都是唯一的,我们可以通过容器 ID 来查看对应的容器发生了什么。

查看容器及状态

runoob@runoob:~$ docker ps
CONTAINER ID        IMAGE                  COMMAND              ...  
5917eac21c36        ubuntu:15.10           "/bin/sh -c 'while t…"    ...

CONTAINER ID: 容器 ID。

IMAGE: 使用的镜像。

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

CREATED: 容器的创建时间。

STATUS: 容器状态。

状态有7种:

  • created(已创建)

  • restarting(重启中)

  • running 或 Up(运行中)

  • removing(迁移中)

  • paused(暂停)

  • exited(停止)

  • dead(死亡)

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

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

查看容器内的标准输出

runoob@runoob:~$ docker logs 2b1b7a428627

停止容器

runoob@runoob:~$ docker stop
runoob@runoob:~$ docker ps

 

 

 

Docker 容器使用

Docker 客户端

查看到 Docker 客户端的所有命令选项

runoob@runoob:~# docker

可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。

如:

runoob@runoob:~# docker stats --help

 

容器使用

获取镜像

本地没有 ubuntu 镜像 可以使用 docker pull 命令来载入 ubuntu 镜像

$ docker pull ubuntu

启动容器

使用 ubuntu 镜像启动一个容器

参数为以命令行模式进入该容器

$ docker run -it ubuntu /bin/bash

容器命名

docker 会自动对它进行命名。另外,我们也可以使用 --name 标识来命名容器

 $ docker run -it --name runoob ubuntu /bin/bash

 

退出终端

root@ed09e4490c57:/# exit

查看所有的容器

$ docker ps -a

启动一个已停止的容器

$ docker start b750bbbcfd88

容器后台运行

可以过 -d 指定容器的运行模式(后台运行)

加了 -d 参数默认不会进入容器

docker run -itd --name ubuntu-test ubuntu /bin/bash

停止一个容器

$ docker stop <容器 ID>

重启容器

$ docker restart <容器 ID>

进入容器

在使用 -d 参数时,容器启动后会进入后台。

docker attach <容器 ID>(不推荐)

注意: 如果从这个容器退出,会导致容器的停止。

docker exec(推荐)

如果从这个容器退出,容器不会停止

docker exec -it 243c32535da7 /bin/bash

删除容器

docker rm [OPTIONS] CONTAINER [CONTAINER...]

docker rm -f db01 db02

 

镜像的使用

导出镜像

这样将导出容器快照到本地文件

$ docker export 1e560fca3906 > ubuntu.tar

可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1

导入镜像

docker import - 镜像名称:镜像标签 < 导出的镜像

$ docker import - new_hangger_server:V1 < ubuntu.tar

列出本地镜像

$ docker images [OPTIONS] [REPOSITORY[:TAG]]
  • REPOSITORY:表示镜像的仓库源

  • TAG:镜像的标签

  • IMAGE ID:镜像ID

  • CREATED:镜像创建时间

  • SIZE:镜像大小

同一个仓库源可以有多个TAG,代表这个仓库源的不同版本

获取镜像

如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它

Crunoob@runoob:~$ docker pull ubuntu:13.10

删除镜像

$ docker rmi hello-world

 

容器的连接

网络端口映射

  • -P :是容器内部端口随机映射到主机的端口。

  • -p : 是容器内部端口绑定到指定的主机端口。

指定容器端口、宿主端口和ip

$ docker run -it -d -p 127.0.0.1:5000:5000 ubuntu /bin/bash

适用于映射到指定地址的指定端口 eg:将容器的5000端口映射到指定地址127.0.0.1的5000端口

指定容器端口、宿主ip

$ docker run -it -d -p 127.0.0.1::4000 docker.io/centos:latest /bin/bash

适用于映射到指定地址的任意端口 eg:将容器的4000端口映射到127.0.0.1的任意端口上:

指定宿主端口、容器端口

$ docker run -itd -p 8000:80 docker.io/centos:latest /bin/bash

适用于将容器指定端口指定映射到宿主机的一个端口上(映射所有接口地址) eg:将容器的80端口映射到宿主机的8000端口上:

查看映射配置

docker port CONTAINER_ID

$ docker port 2b1b7a428627

 

Docker 容器互联

docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。

docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。

新建网络

$ docker network create -d bridge test-net

-d:参数指定 Docker 网络类型,有 bridge、overlay

overlay 网络类型用于Swarm mode

查看网络

$ docker network ls

连接容器

运行容器并连接到新建的 test-net 网络

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

ping 来证明 test1 容器和 test2 容器建立了互联关系

如果 test1、test2 容器内中无 ping 命令

apt-get update
apt install iputils-ping

查看容器所有状态信息

docker inspect id/NAMES # 查看容器所有状态信息;
​
docker inspect --format='{{.NetworkSettings.IPAddress}}' ID/NAMES# 查看 容器ip 地址
​
docker inspect --format '{{.Name}} {{.State.Running}}' NAMES# 容器运行状态

 

容器本地目录挂载

docker run -it -v /home/dock/:/home/mount/ --name first ubuntu:16.04 bin/bash

 

容器文件的拷贝

将容器中的文件复制到主机

docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的路径

docker cp first:/usr/local/tomcat/webapps/test/js/test.js /opt

将主机的文件复制到容器中

docker cp 主机的文件路径 容器名:要拷贝的文件在容器里面的路径

docker cp /root/init.sh  CS5_AS_EALL1:/home/hundsun/workspace/log
posted @ 2022-02-23 15:09  minnersun  阅读(51)  评论(0编辑  收藏  举报