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
2sudo 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源并安装Docker1
2
3sudo 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
3sudo 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 | wget https://www.kernel.org/pub/linux/utils/util-linux/v2.29/util-linux-2.29.tar.gz |
方式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或name1
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