docker使用

本文介绍 Docker 的基本使用方法,包括安装、配置、镜像管理、容器操作等内容。涵盖 Linux 下的 Docker 安装步骤、远程访问配置、常用命令解析及守护式容器的使用技巧。

docker使用参考:

https://blog.csdn.net/abcdocker/article/details/53158210

https://blog.csdn.net/zdy0_2004/article/details/51816899

https://blog.csdn.net/godiors_163/article/details/59069108

https://blog.csdn.net/zjin_hua/article/details/52041757

安装

Linux安装

curl -fsSL https://get.docker.com/ | sh

 

# daocloud.io 国内镜像

curl -sSL https://get.daocloud.io/docker| sh

该安装包适用于 Ubuntu,Debian,Centos 等大部分主流 Linux 发行版。

查看版本:

docker version

显示:

Client:

 Version:      1.11.2

 API version:  1.23

 Go version:   go1.5.4

 Git commit:   b9f10c9

 Built:        WedJun  1 21:23:11 2016

 OS/Arch:     linux/amd64

 

Server:

 Version:      1.11.2

 API version:  1.23

 Go version:   go1.5.4

 Git commit:   b9f10c9

 Built:        WedJun  1 21:23:11 2016

 OS/Arch:     linux/amd64

为了后面的需要,我们这里下载个ununtu的镜像:

docker search ubutun

docker pull ubutun

 

# 查看所有可用镜像

docker images -a

客户端和守护进程

Docker 的 C/S 模式

docker是C/S架构,使用client与Server通信。

支持三种连接方式:
unix:///var/run/docker.sock
tcp://host:port
fd://socketfd

Docker 守护进程的配置和操作

使用ps -ef | grep docker查看docker进程。

管理docker服务:

service docker start

service docker stop

service docker restart

如使用service docker start实际上是执行了/bin/systemctlstart docker.service命令。
建议重启使用:

systemctl daemon-reload

systemctl restartdocker.service

docker守护进程的配置和操作模式:
docker -d [OPTIONS]

运行相关:

 -D, --debug=false

 -e,--exec-driver="native"

 -p,--pidfile="/var/run/docker.pid"

服务器相关:

 -G,--group="docker"

 -H,--host=[]

 --tls=false

RemoteAPI相关:

   --api-enable-cors=false

存储相关:

 -S,--storage-driver=""

 --selinux-enabled=false

 --storage-opt=[]

网络设置相关:

 -b,--bridge=""设置自定义网桥

 --bip=""

 --dns=[]

 --ip=0.0.0.0

启动配置文件:
Ubuntu: /etc/default/docker
CentOS: /etc/sysconfig/docker

如果没有配置文件,可以直接编辑:

vim /lib/systemd/system/docker.service

里面的ExecStart就是启动配置,默认是:

ExecStart=/usr/bin/docker -H fd://

我们可以加几个配置:

ExecStart=/usr/bin/docker -Htcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H fd://--label name=server_1

然后重启:

systemctl daemon-reload

systemctl restartdocker.service

 

# 如果出问题了,可以使用下面命令查看:

systemctl status docker.service

通过ps -ef | grep docker可以查看刚才添加的信息:

[root@localhost ~]# ps -ef | grep docker

root     8262     1  0 23:50?        00:00:00 /usr/bin/docker daemon -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock-H fd:// --label name=server_1

解决centos7和docker1.9没有配置文件问题 - 建站 - IT精英团
http://www.itnpc.com/news/web/145083113731628.html

Docker 的远程访问

使用第二台安装有docker的服务器做演示。为区分,设置label不同。

修改守护进程默认的启动配置:
默认是:-H fd://
可修改为:-H tcp://0.0.0.0:2375 -Hunix:///var/run/docker.sock -H fd:// --label name=server_1

可设置多个连接方式。

·        通过http连接Server:

curl http://127.0.0.1:2375/info

访问的是服务器127.0.0.1:2375的info接口,返回服务器相关信息。

·        通过docker客户端访问Server:

docker -H tcp://127.0.0.1:2375 info

和服务器端一样,客户端也支持三种连接方式,默认是 -Hunix:///var/run/docker.sock:
-H unix:///path/to/sock
tcp://host:port
fd://socketfd

docker客户端使用dockerinfo默认访问的是本地Server。可以修改环境变量DOCKER_HOST改变默认连接。命令行直接输入:

export DOCKER_HOST="tcp://127.0.0.1:2375"

127.0.0.1:237可以替换为实际的Server地址。

如果想恢复本地连接,将DOCKER_HOST置空即可:

export DOCKER_HOST=""

Docker容器

容器的基本操作

Docker run IMAGE [COMMOND] [ARG...] 在新的容器中执行命令

该命令每运行一次,就创建了一个新的容器。

docker run ubuntu echo 'hello world'运行一个新的容器,并执行命令echo

docker run -i -t  --name testubuntu /bin/bash          以交互式终端运行一个新的容器,镜像是ubuntu,使用bash,容器别名test

-i 交互式界面,默认是false
-t 伪终端,默认false
--name 容器别名,默认随机命名

exit 退出交互式界面,容器停止运行
Crtl+P 或者Crtl+Q 退出交互式界面,容器在后台运行。(注意是大写P和Q)

查看容器:

docker ps           查看正在运行的容器

docker ps -a  查看所有容器

docker ps -l  查看最近一次运行的容器

示例:

[root@localhost ~]# docker ps -a

CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS                     PORTS               NAMES

8c52c83c1903        redis                       "docker-entrypoint.sh"   2 hours ago         Exited (0) 2 hours ago                         myredis

容器操作:

dockercreate 容器名或者容器ID 创建容器

dockerstart [-i] 容器名       启动容器

dockerrun 容器名或者容器ID    运行容器,相当于docker create + docker start

dockerattach 容器名或者容器ID 进入容器的命令行

dockerstop 容器名                             停止容器

dockerrm 容器名                               删除容器

 

docker top 容器名          查看WEB应用程序容器的进程

docker inspect 容器名 查看Docker的底层信息

删除容器时,容器必须是停止状态,否则会报错误。

守护式容器

什么是守护式容器?

·        能够长期运行

·        没有交互式会话

·        适合运行应用程序和服务

启动守护式容器:

docker run -d IMAGE [COMMOND] [ARG...]

-d 让容器在后台运行

后台运行任务:

docker run -d --name d1 ubuntu /bin/sh -c "while true;doecho hello world;sleep 1;done;"

b89b9ce64d34bd202a642c8190428f4776f15e882f138949259722f22120201a

返回了一个守护进程的唯一ID。

查看守护进程的运行情况:

[root@localhost ~]# docker ps

CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS               NAMES

b89b9ce64d34        ubuntu                      "/bin/sh-c 'while tr"   3 minutesago       Up 3 minutes                            d1

 

[root@localhost ~]# docker logs -f b89b9ce64d34

hello world

hello world

hello world

hello world

hello world

 

[root@localhost ~]# docker logs -f -t --tail 2 b89b9ce64d34

2016-06-26T10:13:19.786516589Z helloworld

2016-06-26T10:13:20.788871572Z helloworld

2016-06-26T10:13:21.791921389Z helloworld

 

[root@localhost ~]# docker top b89b9ce64d34

UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD

root                4156                4148                0                   06:05               ?                   00:00:00            /bin/sh -c whiletrue;do echo hello world;sleep 1;done;

root                4850                4156                0                   06:16               ?                   00:00:00            sleep1

docker logs [-f] [-t] [--tail] 容器名或id       查看容器内WEB应用程序日志

-f --follow=true|false,默认false,一直跟随log变化
-t --timestamps=true|false,默认false,加上时间戳
--tail="all",返回最新多少条日志

在运行的容器中启动新的进程:

docker exec [-d] [-i] [-t] 容器名[COMMOND] [ARG...]

停止守护式进程:

docker stop容器名      发送停止信号,等待关闭

docker kill容器名      直接关闭容器

Docker镜像

搜索镜像

docker search [-s] IMAGE

下载镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

 

[root@bogon ~]#docker pull ubuntu:16.04

[root@bogon ~]#docker pull daocloud.io/library/ubuntu:16.04

下载镜像名称其实由三部分组成:daocloud.io/library/ubuntu:16.04
其中其中daocloud.io是注册服务器地址,默认是registry.hub.docker.com;ubuntu是仓库名,16.04是标签名,默认是latest。

查看已下载镜像列表

docker images [-a]

 

[root@bogon ~]#docker images

REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE

daocloud.io/library/ubuntu       16.04               12543ced0f6f        2 weeks ago         122.4 MB

ubutun                           latest              12543ced0f6f        2 weeks ago         122.4 MB

daocloud.io/daocloud/dao-2048    latest              6c1ff658e77e        3 months ago        7.598 MB

daocloud.io/daocloud/alpine      latest              e9f3e32a4303        3 months ago        11.52 MB

daocloud.io/library/centos       7.1.1503            fac97c5c4748        8 months ago        212.1 MB

daocloud.io/daocloud/dao-redis   master-init         173a30377d85        13 months ago       190.4 MB

给镜像添加标签

docker tag [OPTIONS]IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

 

[root@bogon ~]# docker tag daocloud.io/library/ubuntu:16.04ubuntu:latest

删除镜像

docker rmi [OPTIONS] IMAGE [IMAGE...]

 

# 按标签删除:多个标签,仅会删除当前标签,不会删除镜像

[root@bogon~]# docker rmi ubuntu:latest

# 按ID删除:直接删除镜像

[root@bogon~]# docker rmi 12543ced0f6f

选项:
-f, --force 强制删除镜像
--no-prune 不删除untagged parents

导出镜像

docker save [OPTIONS] IMAGE [IMAGE...]

 

[root@bogon ~]# dockersave -o ubuntu_latest.tar ubuntu:latest

[root@bogon ~]# ls -l

-rw-r--r--. 1 rootroot 128086528 Jun28 12:39 ubuntu_latest.tar

选项:
-o, --output 写入到文件

导入镜像

docker load--input ubuntu_latest.tar

# 或者

docker load< ubuntu_latest.tar

选项:
-i, --input 从压缩包载入镜像

上传镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

选项:
--disable-content-trust=true 跳过镜像签名

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值