首页 > 技术文章 > docker常用操作

mufeng07 2020-04-03 13:56 原文

一、安装docker

1.CentOS7安装Docker

使用yum安装

卸载老版本的Docker:

sudo yum remove docker docker-common docker-selinux docker-engine

安装仓库

1.安装所需的包


sudo yum install -y yum-utils device-mapper-persistent-data lvm2

2.安装stable仓库。必须安装stable仓库,即使你安装edge或test仓库中Docker构建版本


sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3、(可选)启用edge及test仓库。默认是禁用的


sudo yum-config-manager --enable docker-ce-edge
sudo yum-config-manager --enable docker-ce-test

再次禁用:


sudo yum-config-manager --disable docker-ce-edge

安装Docker CE

1.更新yum的包索引


sudo yum makecache fast

2.安装最新版本的Docker CE


sudo yum install docker-ce

3.列出当前可用的Docker版本


yum list docker-ce.x86_64 --showduplicates|sort -r

可以选择想安装的docker CE版本


sudo yum install docker-ce-<VERSION>

4.启动Docker


sudo systemctl start docker

5.验证安装是否正确


sudo docker run hello-world

卸载

1.删除Docker软件包


sudo yum remove docker-ce

2.删除Docker存储的文件


sudo rm -rf /var/lib/docker

设置开机启动docker


systemctl enable docker

 

二、docker常用命令

1.docker镜像常用命令

1.搜索镜像


docker search [OPTIONS] TERM

展示列表:

NAME:镜像仓库名称

DESCRIPTION:镜像仓库描述

STARS:镜像仓库收藏数

OFFICIAL:表示是否为官方仓库

AUTOMATED:表示是否是自动构建的镜像仓库

2.下载镜像


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

示例:


docker pull reg.itmuch.com/java:7

3.列出镜像


docker images [OPTIONS] [REPOSITORY[:TAG]]

示例:


docker images java

展示列表:

REPOSITORY:镜像所属仓库名称

TAG:镜像标签,默认是latest

IMAGE ID:镜像ID,表示镜像唯一标识

CREATED:镜像创建时间

SIZE:镜像大小

4.删除本地镜像

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

示例:删除所有镜像


docker rmi -f $(docker images)

5.保存镜像


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

示例:


#将busybox保存为busybox.tar
docker save busybox > busybox.tar
docker save --output busybox.tar busybox

6.加载镜像


docker load [OPTIONs]

示例:


#从busybox.tar文件中加载镜像
docker load < busybox.tar
docker load --input busybox.tar

7.构建镜像


docker build [OPTIONS] PATH | URL|-

示例:


docker build -t itmuch/some-repo:some-tag

2.docker容器常用命令

1.新建并启动容器


docker run

2.列出容器


docker ps [OPTIONS]

展示列表:

CONTAINER_ID:表示容器ID

IMAGE:表示镜像名称

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

CREATED:表示容器的创建时间

STATUS:表示容器运行的状态。Up表示运行中,Exited表示已停止

PORTS:表示容器对外的端口号

NAMES:表示容器名称

3.停止容器


docker stop [OPTIONS] CONTAINER [CONTAINER...]

4.强制停止容器


docker kill [OPTIONS] CONTAINER [CONTAINER...]

5.启动已停止的容器


docker start [OPTIONS] CONTAINER [CONTAINER...]

6.重启容器


docker restart [OPTIONS] CONTAINER[CONTAINER...]

7.进入容器


##所有窗口会同步显示
docker attach CONTAINER
##使用nsenter进入容器
docker inspect --format "{{State.Pid}}" $CONTAINDER_ID
nsenter --target "$PID" --mount --uts --ipc --net --pid
#使用docker exec进入
docker exec -it 容器id /bin/bash

8.删除容器


docker rm [OPTIONS] CONTAINER [CONTAINER..]

示例:


docker rm -f $(docker ps -a -q)

9.导出容器


docker export [OPTIONS] CONTAINER

示例:


#将red_panda容器导出成latest.tar文件
docker export red_panda > latest.tar
docker export --output="latest.tar" red_panda

10.导入容器


docker import [OPTIONS] file|URL|-[REPOSITORY[:TAG]]
#从nginx2.tar文件导入,并创建nginx镜像
docker import nginx2.tar nginx

三、docker安装jenkins

1、使用docker命令下载Jenkins 获取镜像


sudo docker pull jenkins

2、创建用于存放jenkins的文件夹


mkdir /home/var/jenkins

3、cd进入/home/var/目录,设置jenkins文件夹的归属用户UID为1000


sudo chown -R 1000:1000 jenkins/

4、启动Jenkins


sudo docker run -itd -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true  -v /home/var/jenkins:/var jenkins

(Jenkins重启命令)


docker restart jenkins

出现问题

1.错误:

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?

问题:在从 https://c.163.com/hub#/m/repository/?repoId=3093 下载镜像 docker pull hub.c.163.com/library/jenkins:latest后,启动容器时,报错:

[admin@3-29 ~]$ sudo docker run --name myjenkins-slave1 -p 8080:8080 -v /var/lib/jenkins:/var/jenkins_home hub.c.163.com/library/jenkinstouch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission deniedCan not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

解决办法:修改路径

[admin@3-29 ~]$ sudo docker run --name myjenkins-slave1 -p 8080:8080 -v /var/lib/jenkins:/var 4bb0a1bd398dRunning from: /usr/share/jenkins/jenkins.warwebroot: EnvVars.masterEnvVars.get("JENKINS_HOME")Jul 14, 2017 9:24:49 AM Main deleteWinstoneTempContentsWARNING: Failed to delete the temporary Winstone file /tmp/winstone/jenkins.warJul 14, 2017 9:24:49 AM org.eclipse.jetty.util.log.JavaUtilLog infoINFO: Logging initialized @382ms

推荐阅读