1、 安装软件包
sudo yum update
sudo yum install -y yum-utils
2、 添加docker稳定版本的yum软件源:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3、 更新yum软件源缓存,并安装docker
sudo yum install -y docker-ce
4、 确认docker启动是否正常
sudo systemctl start docker
-----------------------------------
1、 拉取镜像
docker pull 【hello-world】
docker pull 【xxxx/hello-word】其他非官方仓库,xxx代表仓库地址
2、 查看镜像
docker images
docker images ls
3、添加新标签
docker tag 【hello-world】 【mytest-hello-world】
4、查看镜像详细信息
docker inspect 【hello-world】
5、 查看镜像历史
docker history 【hello-world】
6、搜索官方带nginx关键字的镜像
docker search --filter=is-official=true 【nginx】
7、 搜索收藏数超过4的包含nginx关键字的镜像
docker search --filter=stars=4 【nginx】
8、使用标签删除镜像
docker rmi 【mytest-hello-world】
9、使用镜像ID删除镜像
docker rmi 【fce289e99eb9】
docker rmi 【fce289e99eb9】-f , 强制删除,不建议用这个,先删除容器再执行删除镜像
10、查看所有的容器
docker ps -a
11、 删除容器
docker rm 【93fd377f1087】
12、 清理镜像(清理一些镜像临时文件)
docker image prune
13、 创建一个容器
docker run 【hello-world】
14、 查看docker守护进程
ps -rf | grep docker
15、
-------------------------------- 创建镜像 -------------------------------------------------
1、 上传jar包放linux下面,现以/usr/local/app为例
2、 创建Dockerfile
[root@xiaoqing app]# vi Dockerfile
#VERSION EE:latest
FROM livingobjects/jre8
MAINTAINER wangxiaoqing "417716126@qq.com"
VOLUME /tmp
ADD icloud-center.jar /usr/local/app/icloud-center.jar
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#JAVA_OPTIONS
ENV JAVA_OPTIONS "-Xms1024M \
-Xmx1024M \
-Xmn512M \
-XX:SurvivorRatio=8 \
-XX:MaxTenuringThreshold=7 \
-XX:GCTimeRatio=19 \
-Xnoclassgc \
-XX:+DisableExplicitGC \
-XX:+UseParNewGC \
-XX:+UseConcMarkSweepGC \
-XX:+CMSPermGenSweepingEnabled \
-XX:+UseCMSCompactAtFullCollection \
-XX:CMSFullGCsBeforeCompaction=0 \
-XX:+CMSClassUnloadingEnabled \
-XX:-CMSParallelRemarkEnabled \
-XX:CMSInitiatingOccupancyFraction=70 \
-XX:SoftRefLRUPolicyMSPerMB=0 \
-XX:+PrintClassHistogram \
-XX:+PrintGCDetails \
-XX:+PrintGCTimeStamps \
-XX:+PrintGCApplicationConcurrentTime \
-XX:+PrintGCApplicationStoppedTime \
-Xloggc:/logs/icloud-center.log"
ENTRYPOINT java ${JAVA_OPTIONS} -Djava.security.egd=file:/dev/./urandom -jar /usr/local/app/icloud-center.jar
~
3、 查看目录
[root@xiaoqing app]# ll
total 40248
-rw-r--r-- 1 root root 1419 Jan 27 21:53 Dockerfile
-rw-r--r-- 1 root root 41206942 Jan 9 01:23 icloud-center.jar
4、 构建镜像
[root@xiaoqing app]# docker build -t wangxiaoqing/icloud-center . 【最后有一个点,别忘记了】
5、 查看镜像
6、运行容器(守护态运行)
docker run -d wangxiaoqing/icloud-center
docker run -d -p 192.168.11.16:8761:8761 wangxiaoqing/icloud-center (指定端口,需要防火墙开放端口)
docker run -d --name icloud-center -p 8761:8761 icloud-center (容器命名用name,不然会自动分配一个名字)
7、 查看容器日志
docker logs [container]
8、容量关联
docker run -d -p 192.168.11.16:9777:9777 icloud-auth --link epic_wiles:epic_wiles icloud-center
9、 进入容器
sudo docker exec -it 【700191ff8744】 bash
--------------------------------安装portainer-----------------------------------------
1)下载镜像
docker pull portainer/portainer
2)创建数据卷:
docker volume create portainer_data
3)运行容器
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
参数说明:
-d:容器在后台运行;
-p 9000:9000 :宿主机9000端口映射容器中的9000端口
-v /var/run/docker.sock:/var/run/docker.sock :把宿主机的Docker守护进程(Docker daemon)默认监听的Unix域套接字挂载到容器中;
-v portainer_data:/data :把宿主机portainer_data数据卷挂载到容器/data目录;
4)启动守护进程
vi /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target docker.socket
Requires=docker.socket
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
EnvironmentFile=/etc/sysconfig/docker
ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2375
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
[Install]
WantedBy=multi-user.target
生效服务:systemctl daemon-reload
service docker restart
----------------------------------安装jenkins-------------------------------------------
1、 拉取镜像
docker pull jenkins
2、
- 创建目录
- 运行container,其中49001:8080,表示docker内部使用49001端口,服务器使用8080端口,然后将二者映射起来,之后在浏览器访问的时候实际上还是访问服务器的8080端口
mkdir /data/jenkins_home
chmod 777 jenkins_home/
docker run -d --name jenkins -p 8080:8080 -v /data/jenkins_home:/var/jenkins_home jenkins
docker ps | grep jenkins
----------------------------------创建docker仓库---------------------------------------
1、 创建docker仓库
sudo docker run -d -v /data/docker/registry:/var/lib/registry -p 5000:5000 --restart=always --privileged=true --name registry registry:latest
-v /data/docker/registry:/var/lib/registry 默认情况下,会将仓库存放于容器内的/var/lib/registry目录下,指定本地目录挂载到容器。
-p 5000:5000 端口映射
--restart=always1 在容器退出时总是重启容器,主要应用在生产环境
--privileged=true 在CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,不加上传镜像会报权限错误OSError: [Errno 13] Permission denied: ‘/tmp/registry/repositories/liibrary’)或者(Received unexpected HTTP status: 500 Internal Server Error)错误
--name registry 指定容器的名称
2、上传镜像问题
#docker push 192.168.163.131:5000/test
The push refers to a repository [192.168.163.131:5000/test]
Get https://192.168.11.16:5000/v2/: http: server gave HTTP response to HTTPS client
解决办法是:
在/etc/docker下,创建daemon.json文件,写入:
{ "insecure-registries":["192.168.11.16:5000"]}
重启docker:
systemctl restart docker.service