涉猎Docker

0x00前言

  初步接触Docker,记录一下安装过程和常用命令,同时安装nsenter可以十分方便地进入Docker进行管理。

0x01实践

官方安装教程
1.检测操作系统内核版本

1
uname -a

返回如下:

1
Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-101-generic x86_64)

2.Docker安装
更新源

1
sudo apt-get update

安装对apt对https的支持和ca证书

1
sudo apt-get install apt-transport-https ca-certificates

添加Docker的密钥及源文件

1
2
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list

更新Docker源并安装Docker

1
2
3
sudo apt-get update
sudo apt-get install docker-engine
sudo service docker start # 提示无此服务是执行reboot

3.常用命令
搜索docker镜像

1
sudo docker search

获取ubuntu镜像

1
sudo docker pull ubuntu

查看已获取docker镜像

1
sudo docker images

命令行运行docker(命名为ubuntu_test,-t -i指定命令行方式,并启动bash,输入exit退出docker)

1
sudo docker run --name ubuntu_test -i -t ubuntu /bin/bash

后台运行docker,并映射端口到宿主机(后台运行tutum/lamp镜像,并把docker的80端口映射到宿主机8080,3306映射到宿主机3306,可以访问宿主机的8080端口获取docker的web服务)

1
sudo docker run -d -p 8080:80 -p 3306:3306 --name lamp_test tutum/lamp

查看所有的docker(运行和停止的,并获取到docker的id和name唯一标识符)

1
sudo docker ps -a

已创建docker的启动、停止、重启(指定唯一标识符id或name,以ubuntu_test 为例)

1
2
3
sudo docker start ubuntu_test
sudo docker stop ubuntu_test
sudo docker restart ubuntu_test

删除docker实例(指定唯一标识符id或name,以ubuntu_test 为例)

1
sudo rm ubuntu_test

删除docker镜像(指定镜像标识符,以获取的ubuntu镜像为例)

1
sudo rmi ubuntu

4.安装nsenter进入docker(已过时,使用docker exec -it container_id /bin/bash)
docker在不易后台方式运行时,退出以后docker示例就停止运行,然而后台方式运行情况下,如何进入docker内部执行相关操作就十分重要了
(1)安装(笔者环境为Ubuntu 14.04.5 LTS)
方式1.安装官方最新版
打开连接https://www.kernel.org/pub/linux/utils/util-linux/选择最新版本,复制链接地址
下载安装文件(以2.29为例)

1
2
3
4
5
6
7
wget https://www.kernel.org/pub/linux/utils/util-linux/v2.29/util-linux-2.29.tar.gz
tar -zxvf util-linux-2.29.tar.gz
ls
cd util-linux-2.29
./configure --without-python --disable-all-programs --enable-nsenter --without-ncurses
make nsenter
cp nsenter /usr/local/bin

方式2.一键安装(使用https://github.com/jpetazzo/nsenter的docker镜像安装)

1
sudo docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter

(2)nsenter使用
其中container_name_or_ID修改为需要进入docker的唯一标识符id或name

1
nsenter --target $(docker inspect --format \{\{.State.Pid\}\} container_name_or_ID) --mount --uts --ipc --net --pid

以lamp_test为例,执行如下命令直接进入docker内部

1
sudo nsenter --target $(sudo docker inspect --format \{\{.State.Pid\}\} lamp_test) --mount --uts --ipc --net --pid

0x02其他

  • docker使用nano
    export TERM=xterm
  • docker挂载目录
    docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash