Docker 入门

Docker 的基本使用

安装Docker

Mac本地安装

方法一:使用 brew 安装

brew cask install docker

通常直接安装下载会比较慢,可以直接使用 daocloud 提供的安装包

方法二:从 daocloud 下载

http://get.daocloud.io/

CentOS Linux 7 上安装

yum install -y epel-release
yum install docker-io # 安装docker
# 配置文件 /etc/sysconfig/docker

chkconfig docker on # 加入开机启动
service docker start # 启动docker服务

# 基本信息查看
docker version # 查看docker的版本号,包括客户端、服务端、依赖的Go等
docker info # 查看系统(docker)层面信息,包括管理的images, containers数等

配置加速器地址

Mac 本地配置

由于直接从国外下载镜像速度过慢,可以使用国内镜像

Docker For Mac

右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Daemon 标签(Docker 17.03 之前版本为 Advanced 标签)下的 Registry mirrors 列表中加入下面的镜像地址:

http://1ab3a18d.m.daocloud.io

点击 Apply & Restart 按钮使设置生效。

CentOS Linux 7 上配置

cd /etc/docker/daemon.json

vi daemon.json

// 1. 按 i 进入编辑模式

// 2. 添加网易加速器地址
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
// 3. 退出编辑按 ESC键, 再按两次大写的 ZZ, 保存并退出编辑

列出所有镜像

docker images

REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

获取新镜像

docker pull nodejs

查找镜像

docker search jenkins

停止所有容器

docker stop $(docker ps -a -q)

删除所有容器

docker rm $(docker ps -a -q)

删除镜像

docker rmi <image id>

删除所有镜像

docker rmi $(docker images -q)

进入容器

docker exec -it 容器名 bash

启动Jenkins镜像

docker run -p 9888:8080 -p 50000:50000 -v /Users/xxx/dev/jenkins:/var/jenkins_home --name j01 -idt jenkins

// 进容器,使用root登录,使用bash终端
docker exec -it -u root j01 bash

docker retasrt 容器名

docker ps -l

docker stop 容器名

docker rm 容器名 -f(删除正在运行的容器)

docker rm `docker ps -a -q` 删除所有容器

docker rmi 镜像名


升级Jenkins

下载最新的 Jenkins 安装包
http://mirror.xmission.com/jenkins/war-stable/

复制到 docker 映射到本地的目录内

进入 docker 容器中,将文件 jenkins.war 替换为最新的 jenkins.war

重启 jenkins 容器

docker retart 容器ID

cd /var/jenkins_home/
/var/jenkins_home

# mv jenkins.war /usr/share/jenkins

重启jenkins
http://localhost:8080/restart

如果 Jenkins 容器中的 iptables 防火墙设置被清空了,重启 Docker 就可以重新生成防火墙配置了

systemctl status docker
systemctl restart docker
iptables -L

映射目录的权限问题

# docker ps -a
CONTAINER ID MAGE COMMAND CREATED STATUS PORTS NAMES
51ed5772e5a2 jenkins "/bin/tini -- /usr..." 44 seconds ago Exited (1) 43 seconds ago j01
# docker logs j01
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

修改权限

chown -R 1000:1000 /data/jenkins

安装 Nodejs cnpm

wget https://nodejs.org/dist/v8.9.4/node-v8.9.4-linux-x64.tar.xz