docker

Posted on By xqw

Docker容器与虚拟机区别

Docker 核心技术与实现原理

Docker常见面试问题

安装   
yum install docker   
安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动:

service docker start
chkconfig docker on

#LCTT 译注:此处采用了旧式的 sysv 语法,如采用CentOS 7中支持的新式 systemd 语法,如下:
systemctl  start docker.service
systemctl  enable docker.service

使用Docker 中国加速器

vi  /etc/docker/daemon.json

#添加后:
{
    "registry-mirrors": ["https://registry.docker-cn.com"],
    "live-restore": true
}
重新启动docker

systemctl restart docker
输入docker version 返回版本信息则安装正常。

切换到容器shell中   
docker exec -it some-mysql bash   
退出输入:   
exit   
查看日志   
docker logs some-mysql
详细信息
docker inspect

基本命令

制作镜像

DockerFile

FROM java:8
COPY hlkjOnlineOffice.jar hlkjOnlineOffice.jar ##ADD也可以,若是压缩包,在copy的基础上解压
RUN bash -c 'touch /hlkjOnlineOffice.jar'
EXPOSE 8115
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Ddocker.name=${DOCKER_NAME}","-Ddocker.onlineViewPath=${ONLINE_VIEW_PATH}","/hlkjOnlineOffice.jar"]
#ENTRYPOINT也可不用设置"-Ddocker.name=${DOCKER_NAME}",在yml中 docker.name:${DOCKER_NAME:默认值}"即可

打包成镜像docker build -t hlkj-online-office:latest . 启动docker-compose up -d,会自动读取docker-compose.yml DockerFile指令 制作docker centos镜像

Docker启动mysql 修改密码

平时使用

cd /root/images/
找到最新的镜像
ls |grep city-data-tx-platform-service:yyl-dev-1.0-6e6f3ddb   
docker save bg3:8000/bdk/city-data-tx-platform-service:yyl-dev-1.0-6e6f3ddb  > city-data-tx-platform-service:yyl-dev-1.0-6e6f3ddb.tar
传到测试服务器
scp ./city-data-tx-platform-service\:yyl-dev-1.0-6e6f3ddb.tar 47.98.38.116:/root/images/
登录测试服务器
cd /root/images
docker load -i city-data-tx-platform-service:yyl-dev-1.0-6e6f3ddb.tar
停止原来的镜像
docker ps |grep custom-yunyinglian
docker ps | grep city-data-tx-platform-service 
docker rm -f [containerId]

修改容器内容
docker create --name platform_tmp bg3:8000/bdk/city-data-tx-platform-service:yyl-dev-1.0-a5f8a9a4
docker cp application-yyl-test.properties platform_tmp:/home/city-data-tx-platform
docker commit platform_tmp bg3:8000/bdk/city-data-tx-platform-service:yyl-dev-1.0-a5f8a9a4
docker rm -f platform_tmp

启动
docker run \
        -e "ENV_XMS=1024m" -e "ENV_XMX=3072m" \
        -e "SPRING_PROFILES_ACTIVE=yyl-test"  \
        -p 8010:8008 \
         --privileged=true \
        --name city-data-tx-platform-yyl-dev-1.0 \
        -v /bdk/city-data-tx-platform-yyl-dev-1.0/logs:/home/city-data-tx-platform/logs \
        -d bg3:8000/bdk/city-data-tx-platform-service:yyl-dev-1.0-6e6f3ddb

隔离

容器是一种比虚拟机更加轻量级的隔离方式,封闭的环境主要使用了两种技术, 一种是看起来是隔离的技术,称为namespace,也即每个namespace 中的应用看到的是不同的 IP 地址、用户空间、程号等。 另一种是用起来是隔离的技术,称为cgroup,也即明明整台机器有很多的 CPU、内存,而一个应用只能用其中的一部分。